Reference

Agents and capabilities

What each coding agent can do through Helmlane, how to sign it in, and how any ACP agent or SDK plugin joins — generated from the capability matrix the apps themselves use.

How to read this

Every agent keeps its own conversations and its own strengths, so the controls differ from one to the next. Helmlane shows a control only when that agent supports it on that computer — it never renders a button that would fail when you tap it.

  • Supported. Proven and on.
  • Partly supported. On, with the caveat noted.
  • Awaiting verification. Off until it is proven.
  • Not supported. The note says what to do instead.

Some things work everywhere because Helmlane provides them itself: Handoff to another agent, the hosted Fork of a chat (wherever Follow up works), the terminal, tasks, git and previews.

At a glance

Capabilities of each built-in agent
CapabilityCursorCodexClaude CodeClaude DesktopOpenCodeGemini CLIAntigravity CLIAntigravity IDEZCodeMuse CLIAmpAider
Read historySupported: IDE composers + transcripts; cursor-agent chats listed from its own storeSupported: shared ~/.codex store: app, CLI and IDE threadsSupported: ~/.claude/projects JSONL DAG (excludes Desktop-marked sessions)Supported: Desktop session index + Desktop-marked transcripts; cloud chats not exposedSupported: shared OpenCode historySupported: ~/.gemini/tmp JSONLSupported: ~/.gemini SQLite+JSONLSupported: IDE SQLite+JSONLSupported: SQLite index; app-server only for already-active sessionsSupported: MSP session/list + view/pagePartly supported: threads Helmlane ran here, from its own recording of the streamPartly supported: chats Helmlane started, from their own Aider history files
Start chatsSupported: in the running Cursor app (helmlane-bridge); refused when no window has the project openSupported: CLI app-server (same binary, config and account as the app)SupportedPartly supported: drives the app via the Helmlane Desktop Driver (Accessibility); asks on the Mac while in use; folder must be a sidebar projectSupported: server + project handoff when Desktop is installedSupportedSupported: agy -pPartly supported: IDE's own agent via the Helmlane bridge (IDE 2.5+)Supported: session/createSupported: MSP session/startSupported: amp -x --stream-json --stream-json-inputSupported: aider --message-file on a Helmlane-owned history
Follow upSupported: IDE chats in the app; cursor-agent chats on the real CLI; legacy agent-* on @cursor/sdkSupported: app threads inside the running app (IPC); others on the CLI app-serverSupported: claude --resume on a resident sessionPartly supported: drives the app on a sidebar session (not archived, title unique in its project group); asks on the Mac while in useSupported: server + project handoff when Desktop is installedSupported: gemini --resumeSupported: agy --conversationPartly supported: Helmlane bridge (IDE 2.5+)Supported: session/sendSupported: MSP session/resume + turn/startSupported: amp threads continue <id> -xSupported: --restore-chat-history
Live outputSupported: IDE: persisted-bubble tail; CLI: stream-jsonSupported: app-server notifications or the app owner streamSupported: stream-jsonPartly supported: app-written transcript, per content blockSupported: shared-server SSESupported: stream-jsonSupported: stream-jsonPartly supported: native transcript + engine run stateSupported: NDJSON streamSupported: MSP view items (text, reasoning, tools, subagents)Partly supported: message-granular stream-json; no token deltasPartly supported: reply-granular from the history file
StopSupported: composer.cancelChat / SIGINTSupported: turn/interrupt, or through the app ownerSupported: control-channel interrupt; session survivesPartly supported: presses the app's Stop controlSupportedSupported: process SIGINTSupported: process SIGINT/TERMPartly supported: engine cancel via the bridgeSupported: session/stopSupported: MSP turn/interruptSupported: process SIGINTSupported: SIGINT, then SIGTERM
Steer mid-runPartly supported: legacy @cursor/sdk chats only; the app and cursor-agent -p take no mid-run inputSupported: turn/steer, or through the app ownerPartly supported: interrupt and resend; no mid-turn fold in headless mode (measured across tool boundaries)Not supported: no Desktop mid-turn surface; the app queues follow-upsNot supported: not in the server APINot supportedNot supportedNot supportedNot supported: ZCode 0.16.5 rejects session/send while a turn is activeSupported: MSP turn/steer with an expectedTurnId guardAwaiting verification: steer: true input documented, unproven liveNot supported: one message per process
Approvals and questionsAwaiting verification: verify: IDE approvals via Cursor's Accept/Reject commands; questions shown, answered in CursorSupported: app-server approvals, or answered through the app ownerSupported: can_use_tool over the control channel (needs --permission-prompt-tool stdio)Partly supported: permission/question cards answered with the card's buttons (live prompt not yet exercised)Supported: server permissions and questions (question.asked → POST /question/:id/reply; OpenCode 1.18.26)Not supported: approval modes are configurationNot supported: agy cannot surface approvals headless; permission modes choose the posturePartly supported: command/file/permission approvals + questions; deploy targets stay in the IDESupported: PermissionRequested / approvalsSupported: MSP approval/request + userInput/requestNot supported: no approval surface in execute mode; denials reportedNot supported: --yes-always; shell commands always declined
QueueSupportedSupportedSupported: app-levelPartly supported: Claude Desktop's own queueSupported: app-levelSupported: app-levelSupported: app-levelSupported: app-levelSupported: native session_input + app-levelSupported: app-levelSupported: app-levelSupported: app-level
Choose a modelSupported: IDE picker catalog; per-chat model on create and follow-upSupported: model/effort/speed/mode; app threads otherwise keep app settingsSupported: Sonnet/Opus/Fable/Haiku aliases + 3PPartly supported: model/effort/permission mode via the app's pickersSupported: configured providers onlySupportedSupported: agy models slugsPartly supported: the IDE's own model listSupported: GLM series + custom providersSupported: local model catalog + MSP model/listNot supported: Amp routes models by agent mode, chosen in AmpSupported: Aider default + pulled Ollama models (ollama_chat/)
Usage and costSupportedSupported: thread/tokenUsage/updated; not streamed for app-run turnsSupported: result tokens/cost + real context windowPartly supported: app usage meter when the session is on screenSupported: native message telemetrySupported: headless statisticsSupported: stream-json tokensNot supportedSupported: SQLite model_usage + usage/statsSupported: MSP session/tokenUsage + real context windowPartly supported: per-response tokens attributed to the agent mode; no priceSupported: exact per-response tokens from the analytics log; Aider price when known
RenamePartly supported: IDE chats via composer.updateTitle; others Helmlane-onlySupportedSupported: app-level + native title ingestionPartly supported: app session header; a title already used in the project group is refusedSupportedSupported: app-levelPartly supported: native title read/app-levelPartly supported: title mirrored into the IDE when runningSupported: app-levelSupported: MSP session/rename + app-level titleSupported: app-levelSupported: app-level
ArchivePartly supported: desktop mirroring onlySupportedSupported: app-levelPartly supported: archives through the app; unarchive stays in the appSupported: app-level (native delete is not archive)Supported: app-levelSupported: app-levelSupported: app-levelSupported: app-levelSupported: app-levelSupported: app-levelSupported: app-level
PinPartly supported: desktop mirroring onlySupportedSupported: app-levelSupported: app-levelSupported: app-levelSupported: app-levelSupported: app-levelSupported: app-levelSupported: app-levelSupported: app-levelSupported: app-levelSupported: app-level
Native forkNot supported: Handoff availableSupportedNot supported: native identity requires the first prompt; Handoff availableNot supported: Handoff availableSupportedNot supportedNot supported: Handoff availableNot supportedSupported: session/forkSupported: MSP session/fork with durable provenanceNot supported: Handoff availableNot supported: Handoff available
Approve for this chatNot supported: not proven: Cursor prompts carry no session scopeSupported: exact read-only commands (the allowlist below) in their folder, approved by Helmlane each time (a plain accept, never acceptForSession); file changes, typing into a running command and network prompts never offeredSupported: exact read-only Bash commands (the allowlist below), in-folder edits (when Claude offers accept-edits), one WebFetch domain, WebSearch, one MCP tool, approved by Helmlane each time (a plain allow, never a Claude rule or settings file)Not supported: prompts are answered in the app windowNot supported: always grants the whole project, not one chatNot supported: no interactionsNot supported: no session-scoped answerNot supported: no session-scoped answerNot supported: not provenNot supported: host session choices exist; no recorded fixture proves their scope yetNot supportedNot supported
Attach imagesSupportedSupportedSupportedNot yetSupportedNot yetNot yetSupportedNot yetSupportedSupportedNot yet
Sign in from phoneNot supportedSupportedSupportedNot supportedNot supportedNot supportedNot supportedNot supportedNot supportedSupportedNot supportedNot supported

Generated from the capability matrix, the same table the apps render from.

Cursor

IDE and CLI agent · cursor

Cursor's editor composers through a bridge in the running Cursor app, plus `cursor-agent` for CLI chats.

Sign in

On the computer, as the user the Helmlane agent runs as:

Sign in to the Cursor app on the computer. (cursor-agent login signs in only the CLI, not the app.)

Sign-in cannot be finished from a phone. sign in from the Cursor app (cursor-agent login signs in the CLI, not the IDE)

Install Cursor

How Helmlane knows

Signed-in check
the IDE's own sign-in in its state store (cursorAuth/* tokens; a refresh token means the IDE renews its own access)
Shown as unknown when
the state store cannot be read
Engine
running Cursor app via helmlane-bridge + storage reader; cursor-agent for CLI chats; @cursor/sdk for legacy agent-* chats
Runs as
GUI-owned app runs + supervised cursor-agent -p

Available (13)

  • Read historyIDE composers + transcripts; cursor-agent chats listed from its own store
  • Start chatsin the running Cursor app (helmlane-bridge); refused when no window has the project open
  • Follow upIDE chats in the app; cursor-agent chats on the real CLI; legacy agent-* on @cursor/sdk
  • Live outputIDE: persisted-bubble tail; CLI: stream-json
  • Stopcomposer.cancelChat / SIGINT
  • Steer mid-run · partlylegacy @cursor/sdk chats only; the app and cursor-agent -p take no mid-run input
  • Queue
  • Choose a modelIDE picker catalog; per-chat model on create and follow-up
  • Usage and cost
  • Rename · partlyIDE chats via composer.updateTitle; others Helmlane-only
  • Archive · partlydesktop mirroring only
  • Pin · partlydesktop mirroring only
  • Attach images

Not available (3)

  • Approvals and questions · awaiting verificationverify: IDE approvals via Cursor's Accept/Reject commands; questions shown, answered in Cursor
  • Native forkHandoff available
  • Approve for this chatnot proven: Cursor prompts carry no session scope

Codex

CLI agent · codex

OpenAI Codex through its app-server, with native approvals, steering and forks.

Sign in

On the computer, as the user the Helmlane agent runs as:

Run codex login in a terminal on the computer, or start a device-code sign-in from your phone.

Finish an expired sign-in from your phone. codex login --device-auth — device code

Install Codex

How Helmlane knows

Signed-in check
app-server account/read (requiresOpenaiAuth with no account = signed out)
Shown as unknown when
app-server not started
Engine
codex app-server (JSON-RPC, app-bundled CLI) + Codex app IPC router for threads the app owns
Runs as
supervised child process + follower of the running Codex app

Available (16)

  • Read historyshared ~/.codex store: app, CLI and IDE threads
  • Start chatsCLI app-server (same binary, config and account as the app)
  • Follow upapp threads inside the running app (IPC); others on the CLI app-server
  • Live outputapp-server notifications or the app owner stream
  • Stopturn/interrupt, or through the app owner
  • Steer mid-runturn/steer, or through the app owner
  • Approvals and questionsapp-server approvals, or answered through the app owner
  • Queue
  • Choose a modelmodel/effort/speed/mode; app threads otherwise keep app settings
  • Usage and costthread/tokenUsage/updated; not streamed for app-run turns
  • Rename
  • Archive
  • Pin
  • Native fork
  • Approve for this chatexact read-only commands (the allowlist below) in their folder, approved by Helmlane each time (a plain accept, never acceptForSession); file changes, typing into a running command and network prompts never offered
  • Attach images

Not available (0)

    Claude Code

    CLI agent · claude

    Anthropic's Claude Code, one resident process per conversation with a two-way control channel for approvals.

    Sign in

    On the computer, as the user the Helmlane agent runs as:

    Run claude auth login in a terminal on the computer, or start the sign-in from your phone: open the link it shows, then enter the code the page gives you back in Helmlane.

    Finish an expired sign-in from your phone. claude auth login — login URL; the page's code is relayed back from the phone (codeEntry)

    Install Claude Code

    How Helmlane knows

    Signed-in check
    claude auth status --json
    Shown as unknown when
    output unparseable
    Engine
    Claude CLI (claude -p stream-json + bidirectional control channel, CLAUDE_CODE_ENTRYPOINT=helmlane) + on-disk JSONL DAG reader
    Runs as
    one resident supervised process per conversation

    Available (15)

    • Read history~/.claude/projects JSONL DAG (excludes Desktop-marked sessions)
    • Start chats
    • Follow upclaude --resume on a resident session
    • Live outputstream-json
    • Stopcontrol-channel interrupt; session survives
    • Steer mid-run · partlyinterrupt and resend; no mid-turn fold in headless mode (measured across tool boundaries)
    • Approvals and questionscan_use_tool over the control channel (needs --permission-prompt-tool stdio)
    • Queueapp-level
    • Choose a modelSonnet/Opus/Fable/Haiku aliases + 3P
    • Usage and costresult tokens/cost + real context window
    • Renameapp-level + native title ingestion
    • Archiveapp-level
    • Pinapp-level
    • Approve for this chatexact read-only Bash commands (the allowlist below), in-folder edits (when Claude offers accept-edits), one WebFetch domain, WebSearch, one MCP tool, approved by Helmlane each time (a plain allow, never a Claude rule or settings file)
    • Attach images

    Not available (1)

    • Native forknative identity requires the first prompt; Handoff available

    Claude Desktop

    Desktop app · claude-desktop

    The installed Claude Desktop app, driven through macOS Accessibility by the Helmlane Desktop Driver, with its own engine, account and settings. Cloud-only Claude chats are not visible.

    Sign in

    On the computer, as the user the Helmlane agent runs as:

    Sign in from the Claude Desktop app on the Mac. (claude auth login signs in the Claude Code CLI, not the app.)

    Allow “Helmlane Desktop Driver” once in System Settings → Privacy & Security → Accessibility.

    Sign-in cannot be finished from a phone. sign in from Claude Desktop (claude auth login signs in the CLI, not the app)

    Install Claude Desktop

    How Helmlane knows

    Signed-in check
    None available
    Shown as unknown when
    always: the app keeps its sign-in and the Desktop Driver exposes no query
    Engine
    the installed app (com.anthropic.claudefordesktop) driven through macOS Accessibility by the signed Helmlane Desktop Driver + Desktop's session index + Desktop-marked JSONL transcripts
    Runs as
    GUI-owned; driver app + transcript watcher

    Available (12)

    • Read historyDesktop session index + Desktop-marked transcripts; cloud chats not exposed
    • Start chats · partlydrives the app via the Helmlane Desktop Driver (Accessibility); asks on the Mac while in use; folder must be a sidebar project
    • Follow up · partlydrives the app on a sidebar session (not archived, title unique in its project group); asks on the Mac while in use
    • Live output · partlyapp-written transcript, per content block
    • Stop · partlypresses the app's Stop control
    • Approvals and questions · partlypermission/question cards answered with the card's buttons (live prompt not yet exercised)
    • Queue · partlyClaude Desktop's own queue
    • Choose a model · partlymodel/effort/permission mode via the app's pickers
    • Usage and cost · partlyapp usage meter when the session is on screen
    • Rename · partlyapp session header; a title already used in the project group is refused
    • Archive · partlyarchives through the app; unarchive stays in the app
    • Pinapp-level

    Not available (4)

    • Steer mid-runno Desktop mid-turn surface; the app queues follow-ups
    • Native forkHandoff available
    • Approve for this chatprompts are answered in the app window
    • Attach imagesNot delivered to this agent yet; the composer says so instead of dropping the image.

    OpenCode

    CLI and desktop app · opencode

    OpenCode's own server API, with the model providers you configured in OpenCode.

    Sign in

    On the computer, as the user the Helmlane agent runs as:

    Run opencode auth login on the computer and pick a model provider.

    Sign-in cannot be finished from a phone. opencode auth login needs an interactive provider pick

    Install OpenCode

    How Helmlane knows

    Signed-in check
    GET /provider on its own server: the connected list (0 = nothing signed in, so expired; only Helmlane's injected Ollama = unknown)
    Shown as unknown when
    server unreachable (no state reported)
    Engine
    opencode serve HTTP API (published OpenAPI) + official JS/TS SDK, plus optional signed app discovery + opencode://open-project handoff
    Runs as
    supervised opencode serve process (+ GUI handoff when the Desktop app is installed)

    Available (14)

    • Read historyshared OpenCode history
    • Start chatsserver + project handoff when Desktop is installed
    • Follow upserver + project handoff when Desktop is installed
    • Live outputshared-server SSE
    • Stop
    • Approvals and questionsserver permissions and questions (question.asked → POST /question/:id/reply; OpenCode 1.18.26)
    • Queueapp-level
    • Choose a modelconfigured providers only
    • Usage and costnative message telemetry
    • Rename
    • Archiveapp-level (native delete is not archive)
    • Pinapp-level
    • Native fork
    • Attach images

    Not available (2)

    • Steer mid-runnot in the server API
    • Approve for this chatalways grants the whole project, not one chat

    Gemini CLI

    CLI agent · gemini

    Google's Gemini CLI in non-interactive mode, resuming its own saved chats.

    Sign in

    On the computer, as the user the Helmlane agent runs as:

    Run gemini in a terminal on the computer and finish the sign-in it offers, or provide an API key in the environment or ~/.gemini/.env.

    Sign-in cannot be finished from a phone. no login subcommand: the paste-back flow (NO_BROWSER) only runs by starting a session, which would spend a request and write history

    Install Gemini CLI

    How Helmlane knows

    Signed-in check
    API key (env, ~/.gemini/.env), oauth_creds.json refresh token, gcloud ADC, settings selection (an API-key selection with no key, or no selection and no credential, = expired)
    Shown as unknown when
    personal-OAuth selection without the file (keychain), Vertex/Cloud Shell
    Engine
    gemini -p non-interactive mode (--resume, --output-format stream-json) + disk reader
    Runs as
    supervised CLI process (stream-json stdout)

    Available (11)

    • Read history~/.gemini/tmp JSONL
    • Start chats
    • Follow upgemini --resume
    • Live outputstream-json
    • Stopprocess SIGINT
    • Queueapp-level
    • Choose a model
    • Usage and costheadless statistics
    • Renameapp-level
    • Archiveapp-level
    • Pinapp-level

    Not available (5)

    • Steer mid-run
    • Approvals and questionsapproval modes are configuration
    • Native fork
    • Approve for this chatno interactions
    • Attach imagesNot delivered to this agent yet; the composer says so instead of dropping the image.

    Antigravity CLI

    CLI agent · antigravity-cli

    The Antigravity CLI (`agy`) in headless mode, reading its own transcripts.

    Sign in

    On the computer, as the user the Helmlane agent runs as:

    Sign in from Antigravity on the computer. The CLI has no status command, so Helmlane shows its sign-in state as unknown unless a keyless credential is in the environment.

    Sign-in cannot be finished from a phone. sign in from Antigravity

    How Helmlane knows

    Signed-in check
    None available
    Shown as unknown when
    always: agy has no status command, its token store is undocumented (possibly keychain), and GOOGLE_API_KEY/GOOGLE_APPLICATION_CREDENTIALS are not documented as honoured by agy 1.x (SPIKE.md §4 predates §7, which was never run live), so they are not counted
    Engine
    Antigravity CLI (agy) headless / Language Server + SQLite/JSONL transcripts; MCP for tools
    Runs as
    supervised CLI process (stream-json stdout)

    Available (11)

    • Read history~/.gemini SQLite+JSONL
    • Start chatsagy -p
    • Follow upagy --conversation
    • Live outputstream-json
    • Stopprocess SIGINT/TERM
    • Queueapp-level
    • Choose a modelagy models slugs
    • Usage and coststream-json tokens
    • Rename · partlynative title read/app-level
    • Archiveapp-level
    • Pinapp-level

    Not available (5)

    • Steer mid-run
    • Approvals and questionsagy cannot surface approvals headless; permission modes choose the posture
    • Native forkHandoff available
    • Approve for this chatno session-scoped answer
    • Attach imagesNot delivered to this agent yet; the composer says so instead of dropping the image.

    Antigravity IDE

    IDE · antigravity-ide

    Conversations in the Antigravity IDE, observed from its transcripts. Stopping, approvals and model choice stay in the IDE.

    Sign in

    On the computer, as the user the Helmlane agent runs as:

    Sign in inside the Antigravity IDE.

    Sign-in cannot be finished from a phone. sign in from the IDE

    How Helmlane knows

    Signed-in check
    None available
    Shown as unknown when
    always: sign-in lives inside the IDE; neither the launcher nor the agent bridge exposes an auth query
    Engine
    helmlane-antigravity-bridge extension → the IDE's own language server (Connect RPC) + SQLite/JSONL transcripts
    Runs as
    GUI-owned process; bridge over an owner-only Unix socket

    Available (12)

    • Read historyIDE SQLite+JSONL
    • Start chats · partlyIDE's own agent via the Helmlane bridge (IDE 2.5+)
    • Follow up · partlyHelmlane bridge (IDE 2.5+)
    • Live output · partlynative transcript + engine run state
    • Stop · partlyengine cancel via the bridge
    • Approvals and questions · partlycommand/file/permission approvals + questions; deploy targets stay in the IDE
    • Queueapp-level
    • Choose a model · partlythe IDE's own model list
    • Rename · partlytitle mirrored into the IDE when running
    • Archiveapp-level
    • Pinapp-level
    • Attach images

    Not available (4)

    • Steer mid-run
    • Usage and cost
    • Native fork
    • Approve for this chatno session-scoped answer

    ZCode

    Coding agent · zcode

    ZCode through its app-server protocol, with native approvals, queueing and forks.

    Sign in

    On the computer, as the user the Helmlane agent runs as:

    Configure a model provider in the ZCode app on the computer.

    Sign-in cannot be finished from a phone. configure a provider in the app

    How Helmlane knows

    Signed-in check
    app-server listModels in a known workspace (models = authenticated, empty = no model provider configured = expired)
    Shown as unknown when
    no refresh requested, no workspace to ask in, app-server not ready
    Engine
    zcode app-server (JSON-RPC stdio protocol server) + SQLite reader (~/.zcode/cli/db/db.sqlite)
    Runs as
    supervised child process

    Available (13)

    • Read historySQLite index; app-server only for already-active sessions
    • Start chatssession/create
    • Follow upsession/send
    • Live outputNDJSON stream
    • Stopsession/stop
    • Approvals and questionsPermissionRequested / approvals
    • Queuenative session_input + app-level
    • Choose a modelGLM series + custom providers
    • Usage and costSQLite model_usage + usage/stats
    • Renameapp-level
    • Archiveapp-level
    • Pinapp-level
    • Native forksession/fork

    Not available (3)

    • Steer mid-runZCode 0.16.5 rejects session/send while a turn is active
    • Approve for this chatnot proven
    • Attach imagesNot delivered to this agent yet; the composer says so instead of dropping the image.

    Muse CLI

    CLI agent · muse-cli

    Muse CLI through its session host protocol, with steering, approvals and forks.

    Sign in

    On the computer, as the user the Helmlane agent runs as:

    Run muse login on the computer, or set META_API_KEY.

    Finish an expired sign-in from your phone. muse login — device code

    How Helmlane knows

    Signed-in check
    META_API_KEY, or the login record in muse/auth.json (token itself in the keychain)
    Shown as unknown when
    no store (older CLI)
    Engine
    muse serve (MSP JSON-RPC session host over stdio) + on-disk model catalog; session.jsonl reader kept for read-only degradation and terminal liveness
    Runs as
    supervised child process, one per sandbox posture

    Available (15)

    • Read historyMSP session/list + view/page
    • Start chatsMSP session/start
    • Follow upMSP session/resume + turn/start
    • Live outputMSP view items (text, reasoning, tools, subagents)
    • StopMSP turn/interrupt
    • Steer mid-runMSP turn/steer with an expectedTurnId guard
    • Approvals and questionsMSP approval/request + userInput/request
    • Queueapp-level
    • Choose a modellocal model catalog + MSP model/list
    • Usage and costMSP session/tokenUsage + real context window
    • RenameMSP session/rename + app-level title
    • Archiveapp-level
    • Pinapp-level
    • Native forkMSP session/fork with durable provenance
    • Attach images

    Not available (1)

    • Approve for this chathost session choices exist; no recorded fixture proves their scope yet

    Amp

    CLI agent · amp

    Sourcegraph's Amp in execute mode, streaming JSON, with Helmlane keeping its own record of each run.

    Sign in

    On the computer, as the user the Helmlane agent runs as:

    Create an access token in Amp's settings and set it as AMP_API_KEY for Helmlane on the computer, or run amp login there.

    Sign-in cannot be finished from a phone. amp login is not documented as finishable elsewhere; sign in on the machine

    Install Amp

    How Helmlane knows

    Signed-in check
    AMP_API_KEY holding a Settings access token (sgamp_…), the documented non-interactive credential
    Shown as unknown when
    always otherwise: a saved amp login account is in an unpublished store, and Amp has no documented status command
    Engine
    amp --execute --stream-json --stream-json-input (Claude-Code-compatible JSONL) + Helmlane's own recording of each run's stream
    Runs as
    supervised CLI process per run

    Available (11)

    • Read history · partlythreads Helmlane ran here, from its own recording of the stream
    • Start chatsamp -x --stream-json --stream-json-input
    • Follow upamp threads continue <id> -x
    • Live output · partlymessage-granular stream-json; no token deltas
    • Stopprocess SIGINT
    • Queueapp-level
    • Usage and cost · partlyper-response tokens attributed to the agent mode; no price
    • Renameapp-level
    • Archiveapp-level
    • Pinapp-level
    • Attach images

    Not available (5)

    • Steer mid-run · awaiting verificationsteer: true input documented, unproven live
    • Approvals and questionsno approval surface in execute mode; denials reported
    • Choose a modelAmp routes models by agent mode, chosen in Amp
    • Native forkHandoff available
    • Approve for this chat

    Aider

    CLI agent · aider

    Aider driven one message at a time over a chat history Helmlane owns, with your configured models or pulled Ollama models.

    Sign in

    On the computer, as the user the Helmlane agent runs as:

    Nothing to sign in to: put model API keys in Aider's configuration on the computer, or pull a model with Ollama.

    Sign-in cannot be finished from a phone. nothing to sign in to

    Install Aider

    How Helmlane knows

    Signed-in check
    — (no account; model keys live in Aider's configuration, local models need none)
    Shown as unknown when
    always
    Engine
    aider --message-file over a Helmlane-owned --chat-history-file, observed through that file and --analytics-log; pulled Ollama models as ollama_chat/<name>
    Runs as
    supervised CLI process per run

    Available (11)

    • Read history · partlychats Helmlane started, from their own Aider history files
    • Start chatsaider --message-file on a Helmlane-owned history
    • Follow up--restore-chat-history
    • Live output · partlyreply-granular from the history file
    • StopSIGINT, then SIGTERM
    • Queueapp-level
    • Choose a modelAider default + pulled Ollama models (ollama_chat/)
    • Usage and costexact per-response tokens from the analytics log; Aider price when known
    • Renameapp-level
    • Archiveapp-level
    • Pinapp-level

    Not available (5)

    • Steer mid-runone message per process
    • Approvals and questions--yes-always; shell commands always declined
    • Native forkHandoff available
    • Approve for this chat
    • Attach imagesNot delivered to this agent yet; the composer says so instead of dropping the image.

    Any ACP agent

    One adapter covers every agent that speaks theAgent Client Protocol. It appears in Helmlane as acp:<name>. Helmlane registers an agent from a reviewed launcher table when its binary is installed and its own--help names the ACP entry point:

    AgentCommandRegistered
    goosegoose acpAutomatically
    kimikimi acpAutomatically
    qwenqwen --experimental-acp (or --acp)Automatically
    geminigemini --experimental-acp (or --acp)Opt-in — the built-in Gemini CLI covers it
    opencodeopencode acpOpt-in — the built-in OpenCode covers it
    claude-codeclaude-code-acpOpt-in — the built-in Claude Code covers it
    codexcodex-acpOpt-in — the built-in Codex covers it

    Add your own agents, opt in to a table entry, or turn one off by writing~/.helmlane/acp/agents.json on the computer. Helmlane reads it the next time it starts, keeps your choices, and deletes the file. Commands come only from that table and that file — never from anything an agent read or a webhook sent.

    ~/.helmlane/acp/agents.json
    {
      "agents": [
        { "launcher": "gemini" },
        {
          "slug": "my-agent",
          "displayName": "My Agent",
          "command": "/opt/tools/my-agent",
          "args": ["--acp"]
        }
      ],
      "disabled": ["kimi"]
    }
    Signed-in checksession/new answering ACP auth_required
    Shown as unknownuntil a session has been attempted
    Sign in from phoneNot supported: no reviewed login surface

    Sign in with the agent’s own command on the computer, as the user the Helmlane agent runs as.

    Adapter SDK plugins

    For agents that do not speak ACP, the adapter SDK (@helmlane/adapter-sdk) builds a plugin that appears asext:<publisher>/<name>. Install one by placing it in its own folder under ~/.helmlane/adapters/ with a manifest:

    ~/.helmlane/adapters/review-bot/helmlane-adapter.json
    {
      "id": "ext:acme/review-bot",
      "entry": "dist/index.js"
    }

    A plugin runs inside the Helmlane agent with its privileges, so the loader holds it to the same standard ssh holds ~/.ssh:

    • the folder and entry file must belong to you and be writable by nobody else;
    • the entry must stay inside its own folder after following links;
    • the manifest and the adapter must agree on the id, and a plugin can never impersonate a built-in or an ACP agent;
    • a plugin built for a newer Helmlane agent is refused instead of half-running.

    A plugin that fails any check is reported with the reason and not loaded. Like ACP agents, a loaded plugin starts with every capability off until a conformance run proves it.

    Signed-in checkNone: the SDK has no sign-in concept
    Shown as unknownalways: the SDK has no login concept
    Sign in from phoneNot supported