Pages
Surfaces: your agent (publish, share, wait for answers) · CLI (kcap page) · web app (Pages) · desktop app (Pages tab)
The web app is at https://<your-workspace>.kcap.ai for a cloud workspace; on the local edition the same pages are served from your machine. The desktop app opens it from Help and support → Open dashboard, and kcap local open opens the local one from a terminal
A Page is a self-contained HTML document that kcap hosts at a stable URL: a plan for review, a comparison, a report someone would rather read than scroll past in a terminal. It has an explicit audience, versions, and optionally a form whose answers an agent can wait for. Pages belong to no repository, so the scope selector does not filter them
A Page belongs to no coding agent either. The artifacts some harnesses produce, such as Claude’s, live inside that harness and cannot be opened from another one; a Page is published once and opened from any harness, the web app, the desktop app or a plain browser link, by anyone in its audience
What you can do
Section titled “What you can do”Publish a Page. From your agent:
Write up the migration options as a Page with a comparison table and publish it. Share it with the platform team
The current session is cited as the Page’s source, so the Page links back to the work. From the terminal:
kcap page publish plan.html --title "Migration plan" --visibility orgkcap page publish plan.html --update <pageId> # a new version, same URLkcap page list --mineA Page runs in a sandbox with no network access and cannot reach the kcap web page around it, so inline every style, script and image; an external URL renders as nothing. The viewer passes the current light or dark theme in. A Page can be up to 4 MB and keep up to 50 versions
Share a Page. A Page is private until you share it; there is no default audience to inherit. In the web app, open the Page and change the Visibility row in its side panel. From the terminal:
kcap page share <pageId> --visibility scoped --to team:platform --to user:<id>kcap page share <pageId> --visibility orgnone is only you, org is anyone signed in to your organisation, scoped is exactly the people, teams and projects you name; a share replaces the whole audience. Every reader sees the audience, so they know who else can read before forwarding the link. A link alone grants nothing
Collect answers. A Page can ask its readers something: approve or reject, pick an option, score a section, write a note. The agent declares the fields when it publishes; the server validates every answer and keeps every submission, counting each person’s latest per version. results_mode decides what readers see: only their own answer, aggregate tallies, or who said what. The owner sees tallies under Answers in the side panel and every submission under View responses
Let an agent wait for a decision.
Publish the rollout plan as a Page with an approve/reject field, share it with Dana and Sam, and wait until both have answered
The agent blocks until enough people have answered, the version is closed, or the wait times out; a timeout returns whatever has arrived. Closing a version freezes its answers; a new version starts a new tally, so approval of version 1 is not approval of version 2
Build a Page that answers back. The Page talks to the viewer with postMessage envelopes tagged kcap: "v1": it sends ready, receives init with the reader’s name and any previous answer, sends submit with its payload, and receives ack and, when allowed, results
const send = (msg) => parent.postMessage({ kcap: "v1", ...msg }, "*");addEventListener("message", ({ data }) => { if (data?.kcap !== "v1") return; if (data.type === "init") prefill(data.prior); if (data.type === "ack") showSaved(data.accepted, data.error);});send({ type: "ready" });document.querySelector("#approve").addEventListener("click", () => send({ type: "submit", payload: { verdict: "approve", note: "Ship it." } }));Send submit only from a reader’s action, never while the Page loads; a copied Page would otherwise record an approval nobody gave. A Page that never sends ready is a plain document
Help me get unstuck
Section titled “Help me get unstuck”Someone gets “This page isn’t available”. They are outside the audience, or the link is wrong or deleted; the message is the same for all three. Share it with them
Images or styles are missing. They were external. Inline them as data URIs
My answer was not saved. The ack carried an error: the payload did not match the declared fields, or the version is closed
I want to change the title. Titles are fixed at publish. Publish a new Page, or keep the title and update the content
Old links to /artefacts/…. They still resolve. Pages were called artefacts in earlier versions, and kcap artefact still works as an alias