Protocol
ACP
Type
SDK
Stars
69
License
Apache-2.0
Last push
Nov 7, 2026

use-acp ACP SDK

by marimo-team• 69•
ACPSDKTypeScript

React hooks for connecting to ACP servers over WebSockets

About use-acp

use-acp is an open-source ACP SDK by marimo-team, written mainly in TypeScript. React hooks for connecting to ACP servers over WebSockets. It has 69 GitHub stars and uses the Apache-2.0 license, and its code was last pushed on Nov 7, 2026.

New to ACP? Our ACP Protocol guide explains how it works and lists other projects built on it.

At a glance

Protocol
ACP
Type
SDK
Language
TypeScript
License
Apache-2.0
GitHub stars
69
Last push
Nov 7, 2026
Latest release
use-acp 0.2.6
Released
Jan 12, 2026

Listed from public GitHub data, checked 2026-11-08. Not scanned by AgenticMart.

Questions about use-acp

What is use-acp?

React hooks for connecting to ACP servers over WebSockets It is listed as a ACP SDK, maintained in the marimo-team/use-acp repository on GitHub.

How do I install use-acp?

The project's README gives this command: npm install use-acp. Read the README for setup steps and requirements before running it.

Is use-acp an official ACP project?

No. It is a community project built on ACP, not published by the organisation that runs the protocol.

What license does use-acp use?

It is published under the Apache-2.0 license. Check the license file in the repository before using it commercially.

Is use-acp still maintained?

Its code was last pushed on Nov 7, 2026, and it had 69 GitHub stars when we checked on 2026-11-08. Look at recent issues and releases in the repository for a fuller picture.

README

use-acp

React hooks for Agent Client Protocol (ACP) over WebSockets.

Features

  • WebSocket connection management
  • Reactive state management
  • Notifications timeline for ACP events
  • Permission request/response handling
  • Full TypeScript support

Installation

npm install use-acp
# or
pnpm add use-acp

Usage

Basic Usage

import { useAcpClient } from 'use-acp';

function App() {
  const {
    connect,
    disconnect,
    connectionState,
    notifications,
    pendingPermission,
    resolvePermission,
  } = useAcpClient({
    wsUrl: 'ws://localhost:8080',
    autoConnect: true
  });

  return (
    <div>
      <div>Status: {connectionState.status}</div>
      <button onClick={connectionState.status === 'connected' ? disconnect : connect}>
        {connectionState.status === 'connected' ? 'Disconnect' : 'Connect'}
      </button>

      {pendingPermission && (
        <div>
          <h3>Permission Request</h3>
          {pendingPermission.options.map((option) => (
            <button key={option.optionId} onClick={() => resolvePermission(option)}>
              {option.name}
            </button>
          ))}
        </div>
      )}

      <div>Notifications: {notifications.length}</div>
      <ul>
        {notifications.map((notification) => (
          <li key={notification.id}>{JSON.stringify(notification)}</li>
        ))}
      </ul>
    </div>
  );
}

API Reference

useAcpClient({ wsUrl, autoConnect?, reconnectAttempts?, reconnectDelay? })

Returns: { connect(), disconnect(), connectionState, notifications, clearNotifications(), pendingPermission, resolvePermission(), rejectPermission(), agent }

Utils

import { groupNotifications, mergeToolCalls } from 'use-acp';

// Group notifications by their type
// This helps when displaying notifications in a timeline
const groupedNotifications = groupNotifications(notifications);

// Merge tool calls with the same toolCallId
const mergedToolCalls = mergeToolCalls(toolCalls);

Development

pnpm install
pnpm test      # run tests
pnpm build     # build library
pnpm dev       # run demo, http://localhost:5173

Example Agents

# Gemini ACP
npx -y stdio-to-ws "npx @google/gemini-cli --experimental-acp"

# Claude Code ACP
npx -y stdio-to-ws "npx @zed-industries/claude-code-acp"

# Codex ACP
npx -y stdio-to-ws "npx @zed-industries/codex-acp"

License

Apache 2.0

More ACP projects

All 20 →