Feature · Coding-agent CLIs

Agent Client Protocol

Speak the Agent Client Protocol to a coding-agent CLI the user has already authenticated.

A client (an editor, a terminal UI, an orchestrator) gets structured state from the agent instead of guessing it from bytes on a pseudo-terminal: session state, streaming output, tool calls with status, token usage and cost.

  • PHP
  • TypeScript

Capabilities

What it does

01

The login the user already has

It drives the agent CLI already on the machine, so the user’s existing subscription login is the authentication. In subscription mode the package never reads, holds or sends a credential.

02

Or an app’s API key

An app that bills per token can hand the drivers an API key instead. Credentials are app or tenant configuration, never something an ACP client sends.

03

Permission requests

Codex can raise permission requests for the client to answer, and Claude can for the tools you name. Only an explicit allow runs the tool; a deny, a cancel or a missing handler blocks it.

04

Sessions over a pipe

initialize, session/new, session/load, session/prompt and session/cancel work over a pipe. Several sessions run at once, each with its own agent process.

TypeScript
serve({
  input: process.stdin,
  output: process.stdout,
  driverFactory: (options, events) => new ClaudeDriver(options, events),
  driverCapabilities: CLAUDE_DRIVER_CAPABILITIES,
});

05

Contained processes

Each CLI runs under a small supervisor that owns its whole process tree, never through a shell, so ending a session ends every process it started.

06

No runtime dependencies

The TypeScript package has zero runtime dependencies. The PHP core has no third-party runtime dependencies and does not require Laravel.

How it fits

Where it sits in the ecosystem

TypeScript is the reference implementation; PHP is a port that runs as an ACP agent command or embeds in an application. The PHP port supports Windows; other platforms are refused before a provider starts.

ACP sits outside the provider interface: instead of calling a provider API with a key, it runs the agent CLI the user is signed in to and translates.

Install

Add it to your project

  1. 01

    particle-academy/prism-acp PHP

  2. 02

    @particle-academy/prism-acp TypeScript

The packages

On the registries

PHP · Packagist

particle-academy/prism-acp

TypeScript · npm

@particle-academy/prism-acp