Home / Guides / Local-agent review

ACP gateway · private beta

Run pull-request reviews with a coding agent on your machine

Published July 27, 2026

J-Bot Review can route a GitHub Actions review through a companion running Codex, Cursor, Devin, or Kilo on a machine you control. The agent’s provider credential stays on that machine; GitHub Actions stores gateway routing credentials instead. Review prompts and transcripts pass through—and are journaled by—the gateway you operate.

Private-beta boundary

This is an advanced, self-managed route, not the default Marketplace setup. Today it is for operators comfortable running the J-Bot gateway and companion from source. The standard Action remains the one-workflow, no-server path.

How the ACP gateway route works

GitHub Actions still starts the review and posts the result. Instead of launching the coding agent in the Action container, it drives an Agent Client Protocol (ACP) session through a gateway to your companion. ACP is the agent interface; J-Bot’s authentication, endpoint routing, journaling, and companion process are the transport around it.

The repository itself is not stored by the gateway. For a routed review, the companion makes a temporary clone of the committed pull-request ref, runs the agent there, and removes the workspace when the session ends.

What ACP does—and what J-Bot adds

Agent Client Protocol (ACP) standardizes communication between a client and a coding agent: session setup, prompts, streaming updates, tool calls, and permission requests. It is the agent interface, not J-Bot’s deployment or security boundary.

J-Bot adds the gateway route around that interface: authenticating the Action and companion, selecting an endpoint, journaling ACP frames, managing the companion session, cloning the pull-request ref, and enforcing a read-only review policy.

Standard Action vs. local-agent route

QuestionStandard ActionLocal-agent route
Where the agent runsGitHub Actions runnerYour companion machine
Provider credentialGitHub repository secretCompanion machine only
J-Bot serverNoneYour gateway relays the session
Repository checkoutRunnerRunner plus a temporary companion clone
Best fitFastest installation; no service to operateKeep agent credentials out of CI; use a companion you control

The homepage’s “zero servers” and “checkout stays on your runner” claims describe the standard Action. Choosing the companion route changes that topology deliberately.

Where credentials and review data live

LocationCredentialsCode and review data
GitHub ActionsGitHub token; gateway URL, client token, and endpoint idRunner checkout, pull-request context, prompt and diff sent to the gateway
GatewayClient bearer token and separate companion endpoint tokensRelays and journals ACP frames: prompts, diffs, reasoning, tool activity, permission decisions, and findings
CompanionAgent/provider credential; endpoint token; Git credentials for private repositoriesTemporary repository clone and the running agent process
Agent providerUsed by the agent on the companionReceives the model context the coding agent normally sends
Not credentialless

The agent’s provider credential does not enter GitHub Actions or the gateway. Routing credentials still exist, and a private-repository clone requires Git authentication on the companion.

Supported agents in the private beta

AgentAuthentication on the companionCurrent note
CodexLocal ~/.codex authenticationUses the companion’s Codex setup
CursorCURSOR_API_KEY on the companionThe key stays off the runner, but Cursor does not use ambient login here
DevinLocal Devin credentialsUses the companion’s existing Devin authentication
KiloLocal Kilo auth fileDefault companion agent when none is specified

Cline, Command Code, Grok Build, Qoder, and model-API providers remain available through the standard Action path; setting gateway variables does not route them to the companion.

Security boundaries

What an operator runs

  1. A gateway behind TLS. The current server is a single Node process with filesystem journals. It can run behind Caddy, cloudflared, or another reverse proxy.
  2. A companion on the agent machine. It advertises the agents it can serve, enforces a session limit, and maintains an outbound connection to its endpoint.
  3. A thin-client review workflow. The workflow supplies the gateway URL and client token, selects an endpoint, and identifies the repository, head ref, and base commit for the companion clone.

The implementation README carries the current environment variables and source-run commands. Because packaging is still being hardened, treat that document—not copied snippets on third-party sites—as the source of truth: ACP gateway setup in the J-Bot repository →

Current limits

When to choose this route

If the simplest reliable setup matters more, use the standard GitHub Action. It remains the default path: one workflow, no J-Bot server, and the checkout stays on the runner.

FAQ

Does local-agent routing require no credentials?

No. It keeps the agent’s provider credential on the companion instead of putting it in GitHub Actions or the gateway. The workflow still needs gateway routing credentials, the companion needs its endpoint credential, and private repositories require Git access on the companion.

Does the repository stay only on the GitHub Actions runner?

No. The standard Action path keeps the checkout on the runner, but a companion-routed review creates a temporary clone on the companion so the local agent can inspect the committed ref. The gateway does not clone the repository.

What does the gateway retain?

The gateway journals ACP session frames, including review prompts, diffs, agent reasoning, tool activity, permission decisions, and findings. Credentials are materialized on the companion and do not cross the ACP session. Automatic retention and pruning are not part of the private beta, so operators must manage the journal directory.

Which coding agents can use the ACP gateway?

The private-beta route supports Codex, Cursor, Devin, and Kilo. Other J-Bot providers continue to run through the standard Action path and ignore the ACP gateway settings.

Related documentation