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

@victor-software-house/pi-acp

v0.4.0

Published

ACP adapter for pi coding agent

Downloads

552

Readme

pi-acp

ACP (Agent Client Protocol) adapter for pi coding agent.

pi-acp embeds pi directly via the @mariozechner/pi-coding-agent SDK and exposes it as an ACP agent over stdio. Each ACP session owns one in-process AgentSession.

Status

Active development. ACP compliance is improving steadily. Development is centered around Zed editor support; other ACP clients may have varying levels of compatibility.

Features

  • Streams assistant output as ACP agent_message_chunk
  • Streams thinking output as ACP agent_thought_chunk
  • Maps pi tool execution to ACP tool_call / tool_call_update
    • Descriptive tool titles (Read src/index.ts, Run ls -la, Edit config.ts)
    • Tool call locations surfaced for follow-along features in clients like Zed
    • For edit and write, emits ACP structured diffs (oldText/newText)
    • Tool kinds: read, edit, execute (bash), other
  • Session configuration via ACP configOptions
    • Model selector (category: model)
    • Thinking level selector (category: thought_level)
    • Also advertises modes and models for backward compatibility
    • session/set_config_option for changing model or thinking level
    • config_option_update emitted when configuration changes
  • Session persistence and lifecycle
    • Multiple concurrent sessions supported
    • pi manages sessions in ~/.pi/agent/sessions/...
    • session/list with title fallback from first user message
    • session/load replays structured history (text, thinking, tool calls)
    • unstable_closeSession, unstable_resumeSession, unstable_forkSession
    • Sessions can be resumed in both pi CLI and ACP clients
  • Usage and cost tracking
    • usage_update emitted after each agent turn with context size and cost
    • PromptResponse.usage includes per-turn token counts
  • Slash commands
    • File-based prompt templates from ~/.pi/agent/prompts/ and <cwd>/.pi/prompts/
    • Extension commands from pi extensions
    • Skill commands (appear as /skill:skill-name)
    • Built-in adapter commands (see below)
  • Authentication via Terminal Auth (ACP Registry support)
  • Startup info block with pi version and context (configurable via quietStartup setting)

Prerequisites

  • Node.js 20+
  • pi installed globally: npm install -g @mariozechner/pi-coding-agent
  • Configure pi for your model providers/API keys

Install

ACP Registry (Zed)

Launch the registry with zed: acp registry and select pi ACP:

"agent_servers": {
  "pi-acp": {
    "type": "registry"
  }
}

npx (no global install)

"agent_servers": {
  "pi": {
    "type": "custom",
    "command": "npx",
    "args": ["-y", "@victor-software-house/pi-acp"],
    "env": {}
  }
}

Global install

npm install -g @victor-software-house/pi-acp
"agent_servers": {
  "pi": {
    "type": "custom",
    "command": "pi-acp",
    "args": [],
    "env": {}
  }
}

From source

bun install
bun run build
"agent_servers": {
  "pi": {
    "type": "custom",
    "command": "node",
    "args": ["/path/to/pi-acp/dist/index.js"],
    "env": {}
  }
}

Built-in commands

  • /compact [instructions...] -- compact session context
  • /autocompact on|off|toggle -- toggle automatic compaction
  • /export -- export session to HTML
  • /session -- show session stats (tokens, messages, cost)
  • /name <name> -- set session display name
  • /steering all|one-at-a-time -- set steering message delivery mode
  • /follow-up all|one-at-a-time -- set follow-up message delivery mode
  • /changelog -- show pi changelog

Authentication

Terminal Auth for the ACP Registry:

pi-acp --terminal-login

Zed shows an Authenticate banner that launches this automatically.

Development

bun install
bun run dev          # run from src
bun run build        # tsdown -> dist/index.mjs
bun run typecheck    # tsc --noEmit
bun run lint         # biome + oxlint
bun test             # 26 tests

Project layout:

src/
  index.ts                  # stdio entry point
  env.d.ts                  # ProcessEnv augmentation
  acp/
    agent.ts                # PiAcpAgent (ACP Agent interface)
    session.ts              # PiAcpSession (wraps AgentSession, translates events)
    auth.ts                 # AuthMethod builder
    auth-required.ts        # auth error detection
    pi-settings.ts          # settings reader (Zod schema)
    translate/
      pi-messages.ts        # pi message text extraction
      pi-tools.ts           # pi tool result text extraction (Zod schema)
      prompt.ts             # ACP ContentBlock -> pi message
  pi-auth/
    status.ts               # auth detection (Zod schema)
test/
  helpers/fakes.ts          # test doubles
  unit/                     # unit tests
  component/                # integration tests

Limitations

MUST-level gaps

  • MCP servers -- accepted in session/new and session/load params but not wired through to pi. ACP requires agents to connect to all provided MCP servers. This is the main compliance gap (upstream pi SDK limitation).

SHOULD-level gaps

  • session/request_permission -- pi does not request permission from ACP clients before tool execution.

Not implemented (MAY / client capabilities)

  • agent_plan -- plan updates not emitted before tool execution. pi has no equivalent planning surface.
  • ACP filesystem delegation (fs/read_text_file, fs/write_text_file) -- pi reads/writes locally. Not advertised.
  • ACP terminal delegation (terminal/*) -- pi executes commands locally. Not advertised.

Design decisions

  • pi does not have real session modes (ask/architect/code). The modes field exposes thinking levels for backward compatibility with clients that do not support configOptions.
  • configOptions is the preferred configuration mechanism. Zed uses it exclusively when present.
  • pi-acp uses direct filesystem access rather than delegating reads/writes to the ACP client. This means pi reads on-disk file versions, not unsaved editor buffers.

See docs/engineering/acp-conformance.md for detailed conformance status.

Release

Releases are automated via semantic-release on pushes to main. The pipeline runs typecheck, lint, tests, and npm pack --dry-run before publishing. npm trusted publishing (OIDC) is used -- no long-lived npm tokens.

Commit messages must follow Conventional Commits. Commitlint enforces this locally via lefthook and in CI.

License

MIT (see LICENSE).


Inspired by svkozak/pi-acp.