Skip to content

Your first session

The windows on this page are drawn live by Cockpit’s own code — the same renderers that run in your terminal — playing a sample session.

After installing and restarting OpenCode, type:

/cockpit-setup

The agent reads what is installed and what your settings say, fixes anything from before 0.9 first, and then asks only what is left: which blocks the sidebar shows, in what order, and whether an empty one stays. It writes the smallest file that does it and reads it back. Run it again whenever you want a change — or just ask: “make my sidebar quieter”, “move trail above subagents”. Every setting it can write is in Configuration.

Ask the agent for something that cannot finish inside a tool call:

start the dev server, wait until it’s listening, then tell me the url

Three things happen, and none of them need you.

It chooses the tool. shell_start is described to the model as the thing to use for anything long-running or interactive, so a dev server goes there instead of into bash.

It waits on the real signal. waitFor: { port: 5173 } returns the moment the port answers — not after a sleep, not after a guess.

It keeps the shell. The process is owned by the daemon, so it is still running after the turn ends, and it shows up in the panel and the sidebar. A test run that fails tells the agent once, with the failing line.

KeyWhat it does
ctrl+x oToggle the panel under the conversation
ctrl+x jOpen the full console
← →The previous or next shell, in the console
/Filter the log, in the console
?Details for the selected shell

add a coupon code to the checkout total

When it finishes, do not read the diff in the chat. Press ctrl+x v — or type /changes — and read it where the work happened.

Move with j and k, enter into a file, and when a line is wrong press c and say why. Nothing has been sent yet. space marks a file read and moves you to the next one; s hands the whole review over.

Then watch what the agent does with it: review_list gives it every comment with the code each one is about, it changes what needs changing, and review_reply resolved=true closes the thread — which only counts if the file actually changed. Your comments stay on the branch, so tomorrow’s conversation still has them.

If you installed the bundle you already have the statusline, at the top of the sidebar: how full the context is, where the tokens went, a proxy’s budget, what has changed. It answers the questions you would otherwise ask by leaving — and every part of it is a segment you can reshape, recolour or write yourself (/status-setup designs it with you).

  • “Run the test suite in the background and tell me if it fails.”
  • “Watch tsc and let me know when it breaks.”
  • “Open a node REPL and check what new URL('..', import.meta.url) returns.”
  • Leave a comment on a line you disagree with, submit, and let it answer — then look at the thread.
  • “Read the diff and leave review comments on anything you would want a second opinion on.” The agent can open threads of its own, and they outlive the conversation.