npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@grackle-ai/runtime-acp

v0.117.0

Published

Grackle Agent Client Protocol (ACP) runtime implementation

Readme

@grackle-ai/runtime-acp

Grackle runtime that drives any agent speaking the Agent Client Protocol (ACP) over stdio.

Overview

The Agent Client Protocol (ACP) is a JSON-RPC protocol, framed as newline-delimited JSON over stdio, that lets a client drive a coding agent: initialize, authenticate, create a session, send prompts, and receive streamed session updates. This runtime spawns an ACP-compatible agent CLI as a subprocess and talks to it over its stdin/stdout — so a single implementation can drive many different agents (e.g. Goose, codex-acp, Copilot, the Claude agent ACP bridge).

AcpRuntime implements the @grackle-ai/runtime-sdk runtime interface (extending BaseAgentRuntime / BaseAgentSession) and is loaded by the Grackle PowerLine, which registers one runtime per configured ACP agent. Each session translates ACP session updates into Grackle AgentEvents (text, thoughts, tool calls/results, plans, and usage), auto-approves permission requests, and forwards MCP servers to the agent.

Configuration

AcpRuntime is constructed with an AcpAgentConfig, which names the runtime and describes the agent CLI to spawn:

| Field | Type | Default | Description | |-------|------|---------|-------------| | name | string | — | Runtime name used for registry lookup and the isolated install directory (e.g. "codex-acp") | | command | string | — | Agent command to spawn (e.g. "codex-acp", "copilot", "goose") | | args | string[] | — | CLI arguments passed to the command (e.g. ["--acp", "--stdio"]) | | env | Record<string, string> | — | Additional environment variables for the subprocess |

The Grackle PowerLine registers several ACP agents out of the box:

| Runtime name | Command | Args | |--------------|---------|------| | goose | goose | acp | | codex-acp | codex-acp | — | | copilot-acp | copilot | --acp --stdio | | claude-code-acp | claude-agent-acp | — |

The ACP SDK (@agentclientprotocol/sdk) is installed lazily into an isolated per-runtime directory (~/.grackle/runtimes/<name>/) the first time a session starts; that directory's .bin is prepended to the subprocess PATH.

Credentials

Credentials are passed through to the agent subprocess via the process environment (plus any env overrides in the config). During ACP initialize, the runtime inspects the agent's advertised auth methods and, if an env_var method is offered whose required variables are all present in the environment, calls authenticate() with it. This is required by some bridges (e.g. Copilot) and is a best-effort, non-fatal step for others (e.g. codex-acp, claude-code-acp). Each agent defines its own required credential variables.

Requirements

  • Node.js >= 22
  • An ACP-compatible agent CLI available on PATH (or installed into the runtime's isolated directory), e.g. goose, codex-acp, copilot, or claude-agent-acp
  • Whatever credentials the chosen agent requires, supplied via the environment

License

MIT