Quickstart
1
Install the CLI
powershell -c "irm https://native.jam.dev/install.ps1 | iex". See Install for platform notes.2
Log in
jam auth login --token instead.3
Read a Jam
4
Teach your agent
jam-cli teaches it to read a Jam. jam-proof teaches it to record one.5
Paste a Jam link
Give your agent a Jam link and a sentence: “Fix this and show me it works.” The agent does the rest.
An agent fixes the bug from the link
Say a teammate records the checkout page failing and sends youhttps://jam.dev/c/abc123. You paste it to your agent with one line: “Fix this.” Here is what happens with the skills installed.
It reads the evidence, not the ticket. The agent pulls the Jam and filters to what matters.
POST /api/checkout answered 500 at 42 seconds, response body included. The console read returns the TypeError the page threw a moment later, with the stack trace. The agent now has the failing endpoint, the payload that was sent, and the line in the frontend that could not handle the answer.
It looks at the screen when it needs to. Logs say what broke. Frames say what the person saw.
An agent proves the fix
Add three words to the prompt: “and show me.” Thejam-proof skill picks up from the fix.
What you can do with it
Prove a change works
jam record run records the screen while a command runs, then uploads and prints a link. Wrap a test, a script, or the steps an agent drives. The wrapped command keeps its own exit code, so a failing test still fails the pipeline and still leaves a Jam behind.
jam record runs on macOS and Linux. Run jam doctor to check recording readiness. See Record a window or the desktop.
Turn a Playwright failure into a watchable Jam
Configure Playwright to keep a video and a trace for failed tests, then point the CLI at both. The Jam plays the video with the run’s console logs and network requests lined up on the timeline, and shows what the test typed with sensitive fields masked.playwright.config.ts:
test-results/. The example takes the first one. Loop over the folders to upload every failure.
JAM_TOKEN holds a personal access token. The CLI never writes it to disk. Post the printed URL on the job and reviewers watch the failure instead of reading a stack trace. See Create and update Jams.
Why the CLI over MCP
Jam also has a Model Context Protocol (MCP) server. Both read the same Jam. Pick MCP when your agent only needs the bug context and you want zero install. Pick the CLI when you want any of these.- It records.
jam record runcaptures a window while a check runs and uploads a Jam. MCP reads Jams. It cannot make one. Proof of work only exists on the CLI side. - It runs anywhere a shell runs. CI jobs, cron, a Docker container, a script on a teammate’s machine. No MCP client, no per-tool config, one
JAM_TOKEN. - It works with every agent. Any agent that can run a command can use it, including ones with no MCP support.
jam skills installtargets Claude Code, Cursor, Codex, and OpenCode, one runtime per run (--target <agent>), andjam agent-contextcovers whatever ships next month. - It ships the workflow, not only the tools.
jam skills installteaches the agent the order of operations: errors first, frames when logs run out, record the fix, comment the link. An MCP tool list leaves that up to the model. - It creates Jams from test runs. Point
jam create jamat a Playwright video and trace and the failure becomes a watchable Jam with logs on the timeline. - It composes. Pipe to
jq, branch on exit codes, page with--after, write frames to disk and open them in whatever you like. - It keeps context small. Filters like
--level errorand--status 5xxreturn only the events that matter, and output lands on disk or in a pipe until the agent asks for it. - It is yours to wrap.
jam agent-contextprints the full command surface as JSON (argument types, flag enums, output shapes), kept in step with the commands by a test. Skip the skills and build your own tool definitions on it:jam agent-context | jq '.commands["get.jam"]'.
Next
- CLI reference lists every command, flag, exit code, and environment variable.
- Personal access tokens covers scopes, expiration, and rotation for CI.
- MCP sets up the same bug context in Claude, Cursor, VS Code, and ChatGPT.

