Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
bb84e02
Add design spec for Next.js site migration
samkim Sep 29, 2026
dbf478a
Add implementation plan for Next.js site migration
samkim Sep 29, 2026
474743c
Scaffold the Next.js site package
samkim Sep 29, 2026
d0bdf28
Add the docs guide index and nav model
samkim Sep 29, 2026
cfdfd59
Move docs content and checker into site/
samkim Sep 29, 2026
ae5de74
Serve the docs from Next.js routes with next-themes
samkim Sep 29, 2026
b8d12ce
Link docs by path instead of hash route; check links in the build
samkim Sep 29, 2026
08c9d1d
Port the landing page to the Next.js site
samkim Sep 29, 2026
b130b7f
Add Pagefind search to the docs
samkim Sep 29, 2026
e745d8a
Discard stale search results
samkim Sep 29, 2026
2750357
Add cookieless PostHog page-view analytics
samkim Sep 29, 2026
6e43043
Disable PostHog conversations and product tours explicitly
samkim Sep 29, 2026
5d3eef3
Remove the Vite docs app; point tooling and docs at site/
samkim Sep 29, 2026
b39a65a
Format the migration spec and plan
samkim Sep 29, 2026
a799674
Render guide ledes as <div> so MDX output is valid HTML
samkim Sep 29, 2026
10f7e9f
Allow 127.0.0.1 as a dev origin so docs pages hydrate under next dev
samkim Sep 29, 2026
aaf2d8d
Enforce lede is a <div>, never a <p>, and document why
samkim Sep 29, 2026
2264835
Pin pnpm, stop granting core-js its postinstall, document Vercel setup
samkim Sep 29, 2026
25bcdf5
Sweep stale "showcase docs" / docs/public wording after the site/ mig…
samkim Sep 29, 2026
3fcfed9
Clear search on navigation; make Screenshot images keyboard-activatable
samkim Sep 29, 2026
7732dd5
Diff the web-bundle freshness check against main
samkim Sep 29, 2026
48c694c
Drop the Vercel and PostHog setup steps from the site README
samkim Sep 29, 2026
5682846
Regenerate the CLI reference docs
samkim Sep 29, 2026
8e5c13a
Refer to the base branch as main, not master
samkim Sep 29, 2026
6fb033a
Focus docs search with Cmd+K (Ctrl+K off Apple platforms)
samkim Sep 29, 2026
cc4566c
Retell the landing page in the README's story
samkim Sep 29, 2026
4482f1c
Tighten landing copy, drop decorative chips, move theme toggle
samkim Sep 29, 2026
d839876
Put the AuthZed credit and theme toggle in a footer bottom bar
samkim Sep 29, 2026
834fa3a
Drop the decorative section numerals from the landing page
samkim Sep 29, 2026
4274185
Fall back to navigator.platform when the platform hint is empty
samkim Sep 29, 2026
28bb8af
Share one site footer across the landing page and docs; hero wordmark
samkim Sep 29, 2026
c7dbe52
Set the security-area card titles apart from their bullets
samkim Sep 29, 2026
80e6b7a
Cut hedges and stacked reversals from the landing copy
samkim Sep 29, 2026
67d0c83
Name the hero install tabs plainly
samkim Sep 29, 2026
854b985
Resolve the hero questions and sharpen the problem heading
samkim Sep 29, 2026
6ae65b2
Give the hero one CTA and the nav the only logo
samkim Sep 29, 2026
0001ca0
Use the full wordmark in the landing nav
samkim Sep 29, 2026
5e9aeea
Balance landing heading wraps
samkim Sep 29, 2026
32251a5
Drop the "before the call" diagram from the problem section
samkim Sep 29, 2026
7d83d84
Say agents can be built from the primitives, not that all use them
samkim Sep 29, 2026
cd1c67b
Define a primitive before saying OAP implements each
samkim Sep 29, 2026
c51a9fb
Make the security-section intro more direct
samkim Sep 29, 2026
f28b255
List the fuller set of channels on the landing page
samkim Sep 29, 2026
909055d
Point the landing page's GitHub and Source links at the repo
samkim Sep 29, 2026
6dc7d86
Fill the last placeholder links: Discord, and no full-assessment button
samkim Sep 29, 2026
bcd8bad
Launch fixes: accurate cards, license, OWASP credit, quickstart path
samkim Sep 29, 2026
2651154
Add search and sharing metadata for openap.org
samkim Sep 29, 2026
b4e4f39
Correct the landing page's overstated claims
samkim Sep 29, 2026
af268a8
Reconcile the docs with the code and the primary message
samkim Sep 29, 2026
2ec976c
Make the docs navigable on phones
samkim Sep 29, 2026
4979f32
Fix the launch accessibility gaps
samkim Sep 29, 2026
72d209f
Make docs search failures visible and announce results
samkim Sep 29, 2026
97608a9
Send security headers on every route
samkim Sep 29, 2026
3b4e74f
List the install prerequisites, linking each tool's own install page
samkim Sep 29, 2026
0638de1
Stop tracking the superpowers design docs
samkim Sep 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ TODO
.claude/
.worktrees/
.superpowers/
# Superpowers design specs and plans: working notes, kept out of the repo.
docs/superpowers/

# mage desktop:* build outputs (rootfs.img, images-minimal.tar.zst, ap.app)
# and downloaded upstream artifacts (Ubuntu cloud image, k3s release) — see
Expand Down
17 changes: 9 additions & 8 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -348,9 +348,10 @@ mage manifests # always after gen:api, OR after any config/ edit

## Documentation regeneration

`mage docs:cli` and `mage docs:crd` regenerate the showcase docs site's
reference pages — one from the live cobra tree, one from the CRD schemas under
`config/crds`. Both are plain deterministic generators; neither invokes an LLM.
`mage docs:cli` and `mage docs:crd` regenerate the docs site's reference pages —
one from the live cobra tree, one from the CRD schemas under `config/crds` —
writing into `site/content/docs`. Both are plain deterministic generators;
neither invokes an LLM.

`PRIMITIVES.md` (repo root) and `docs/owasp-agentic-top10-coverage.html` are
both hand-maintained: update them by hand when a primitive's code moves or the
Expand Down Expand Up @@ -625,7 +626,7 @@ invisible in the mode everyone tests.** See

## Ship gate: all three test suites must pass before anything merges

**Nothing ships — no merge to `master`, no push, no "done" — until all three
**Nothing ships — no merge to `main`, no push, no "done" — until all three
suites are green:**

```bash
Expand Down Expand Up @@ -809,7 +810,7 @@ false confidence. The integration and e2e tests are gated behind
A change can leave the entire e2e suite red — or not even compiling — and the
default `go test` run stays green.

This is not hypothetical: the owner-derived approver refactor merged to `master`
This is not hypothetical: the owner-derived approver refactor merged to `main`
with the whole e2e suite broken (stale `started_by` model, a `pipeline.Authz`
stub missing new methods, approval scenarios that no longer had a valid
approver) because only the unit suite was run. Fixing it after the fact cost far
Expand Down Expand Up @@ -1029,7 +1030,7 @@ log): here "audit" means _review the code_, not _the append-only ledger_.
### What a pass does

1. **Scope the target.** Default is the **whole repo** (`pkg/` + `cmd/`). Narrow
it when asked: "recent changes" → `git diff master...HEAD`; one or more named
it when asked: "recent changes" → `git diff main...HEAD`; one or more named
packages → just those. The whole-repo pass is expensive by design — it
partitions the 330+ leaf packages into subsystem groups and fans out — so use
the narrowed forms for routine work and reserve the full sweep for a periodic
Expand Down Expand Up @@ -1089,13 +1090,13 @@ it):

```bash
mage audit:all # whole repo (pkg/ + internal/ + cmd/)
mage audit:recent # git diff master...HEAD (no-op if empty)
mage audit:recent # git diff main...HEAD (no-op if empty)
mage audit:pkg pkg/memory # a named package/dir
```

Env overrides: `AUDIT_DRY_RUN=1` prints the prompt/command without invoking
Claude; `AUDIT_CLAUDE_MODEL` (default `opus`) and `AUDIT_DIFF_BASE` (default
`master`) override the model and the "recent" diff base. Or trigger a pass in
`main`) override the model and the "recent" diff base. Or trigger a pass in
plain language — "run an audit on `pkg/memory`" — following the steps above.

### Rules of thumb
Expand Down
30 changes: 16 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,15 +52,15 @@ with many different owners.
Every control in OAP therefore sits outside the model. The platform decides
before the call, and the decision does not depend on the agent's cooperation.

| | Typical agent platform | OAP |
| ----------------------------------- | ---------------------------------- | ------------------------------------ |
| What an agent can reach | Whatever its credentials allow | Exactly what you granted |
| Who decides an action is allowed | The model, in the moment | The platform, before the call |
| An injected instruction mid-session | Can redirect the agent | Cannot exceed the approved plan |
| Tool credentials | Shared across tools in one sandbox | Held only by the tool that uses them |
| Restricting an MCP server | Needs a narrow upstream token | Declared by you, enforced per call |
| Revoking access | Rotate credentials, redeploy | One permission graph call |
| The audit log | Append-only, enforced by the store | Signed, chained, verifiable offline |
| | Typical agent platform | OAP |
| ----------------------------------- | ---------------------------------- | --------------------------------------- |
| What an agent can reach | Whatever its credentials allow | Exactly what you granted |
| Who decides an action is allowed | The model, in the moment | The platform, before the call |
| An injected instruction mid-session | Can redirect the agent | Cannot widen what it's authorized to do |
| Tool credentials | Shared across tools in one sandbox | Held only by the tool that uses them |
| Restricting an MCP server | Needs a narrow upstream token | Declared by you, enforced per call |
| Revoking access | Rotate credentials, redeploy | One permission graph call |
| The audit log | Append-only, enforced by the store | Signed, chained, verifiable offline |

## What makes it secure

Expand Down Expand Up @@ -192,9 +192,8 @@ On first launch, pick a model provider, enter its API key, and set a local admin
password. OAP provisions the VM, configures the platform, and installs a demo
agent.

Desktop is single-player: good for trying OAP, developing and demoing agents, or
running production agents one person owns and operates. Use Kubernetes when
agents need a shared environment.
Desktop is single-player: good for trying OAP and for developing and demoing
agents. Use Kubernetes for anything durable or shared.

**Local Kubernetes** installs onto a `kind` cluster for development:

Expand Down Expand Up @@ -340,10 +339,13 @@ outside it.

## Read the docs

The docs are at [openap.org/docs](https://openap.org/docs). To run them locally
instead:

```bash
cd showcase
cd site
pnpm install
pnpm docs:dev
pnpm dev
```

Then open [http://localhost:5179](http://localhost:5179) for installation
Expand Down
2 changes: 1 addition & 1 deletion cmd/oap/clidocs_gen_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
"github.com/authzed/openagentprimitives/pkg/gen/clidocs"
)

// TestGenerateCLIReference regenerates the showcase docs' CLI reference from the
// TestGenerateCLIReference regenerates the site's CLI reference from the
// live oap command tree. It is the gated driver for pkg/gen/clidocs (NewRootCmd
// is in package main and can't be imported there). Runs only when
// OAP_GEN_CLI_DOCS names an output dir — `mage docs:cli` sets it; a normal
Expand Down
2 changes: 1 addition & 1 deletion cmd/oap/internal/channelcmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ func NewCmd(g *apcmd.Globals) *cobra.Command {
cmd := &cobra.Command{
Use: "channel",
Aliases: []string{"channels", "ch"},
Short: "Manage Channel CRs (Slack, future webhook/cron, ...).",
Short: "Manage Channel CRs (Slack, browser, GitHub webhooks, schedules, ...).",
}
cmd.AddCommand(
newChannelListCmd(g),
Expand Down
5 changes: 3 additions & 2 deletions docs/assets/brand/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ the inlined copies too:
| `pkg/platform/identityd/handlers_password.go` | The icon on the sign-in page |
| `cmd/oap/internal/desktop/setupui/static/index.html` | The logomark in the desktop setup header, plus the icon |
| `cmd/oap/internal/desktop/menubaricons/render/tunnel.go` | Not a copy: the menu-bar icons are drawn in code. `menuMarkCutout` carries the menu icon's cut-out; regenerate the PNGs with `mage desktop:icons`. |
| `site/components/OapMark.tsx` | `OapMark`, the logomark inlined for the landing page and site footer so it inherits `currentColor` and needs no light/dark asset pair. |

The repo README and the showcase docs site (`showcase/docs/app`) reference the
files here directly.
The repo README and the docs + landing site (`site/`: the `Wordmark` component
and the root layout icons) reference the files here directly.
Loading
Loading