Acplite 0.1.1

There is a newer version of this package available.
See the version list below for details.
dotnet tool install --global Acplite --version 0.1.1
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local Acplite --version 0.1.1
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=Acplite&version=0.1.1
                    
nuke :add-package Acplite --version 0.1.1
                    

<p align="center"> <a href="https://github.com/cristipufu/acplite"> <img src="docs/logo.svg" width="96" height="96" alt="Acplite logo"> </a> </p>

<h1 align="center">Acplite</h1>

<p align="center"> <strong>Your coding agents. One protocol away.</strong><br> Native C# / NativeAOT Agent Client Protocol (ACP) SDK and CLI bridges for <strong>Claude Code</strong>, <strong>OpenAI Codex</strong>, <strong>Grok</strong>, and <strong>Google Antigravity</strong>. </p>

<p align="center"> <a href="https://github.com/cristipufu/acplite/releases/latest"><img src="https://img.shields.io/github/v/release/cristipufu/acplite?style=flat-square&label=release&labelColor=0f172a&color=0ea5e9" alt="Latest release" height="22"></a> <a href="https://www.nuget.org/packages/Acplite/"><img src="https://img.shields.io/nuget/v/Acplite?style=flat-square&logo=nuget&logoColor=white&label=Acplite&labelColor=0f172a&color=0284c7" alt="Acplite NuGet" height="22"></a> <a href="https://www.nuget.org/packages/Acplite.Sdk/"><img src="https://img.shields.io/nuget/v/Acplite.Sdk?style=flat-square&logo=nuget&logoColor=white&label=Acplite.Sdk&labelColor=0f172a&color=0284c7" alt="Acplite.Sdk NuGet" height="22"></a> <a href="https://github.com/cristipufu/acplite/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/cristipufu/acplite/ci.yml?branch=main&style=flat-square&label=build&logo=github&logoColor=white&labelColor=0f172a" alt="Build status" height="22"></a> <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-64748b?style=flat-square&labelColor=0f172a" alt="MIT license" height="22"></a> </p>

<p align="center"> <a href="#quick-start-cli"><strong>Get started</strong></a>  ·  <a href="#supported-coding-agents">Providers</a>  ·  <a href="#c-sdk-usage">C# SDK</a>  ·  <a href="#stdio-acp-bridge-for-editors--hosts">Stdio Bridge</a>  ·  <a href="#architecture">Architecture</a> </p>

<p align="center"> <a href="#installation"><img src="https://img.shields.io/badge/Windows-0078d4?style=flat-square" alt="Windows supported" height="22"></a> <a href="#installation"><img src="https://img.shields.io/badge/macOS-334155?style=flat-square&logo=apple&logoColor=white" alt="macOS supported" height="22"></a> <a href="#installation"><img src="https://img.shields.io/badge/Linux-fcc624?style=flat-square&logo=linux&logoColor=black" alt="Linux supported" height="22"></a> </p>

<p align="center"> <sub>Claude Code · OpenAI Codex · Grok · Google Antigravity · JSON-RPC 2.0 ACP</sub> </p>


Why Acplite?

Most coding agent CLIs (claude, codex, agy) don't speak the Agent Client Protocol (ACP) natively. Acplite bridges them directly in C# with zero Node.js wrappers, so you can control any local coding agent through one unified interface:

  • One API for 4 Agents: Bridges claude, codex, grok, and agy into a single strongly-typed ACP event stream.
  • SDK + stdio Server: Embed Acplite.Sdk in your .NET app or run acplite serve <provider> for Zed, JetBrains, or Neovim.
  • Live Session Discovery & Tailing: Finds local sessions on disk and live-tails .jsonl transcripts in real time without locking files.
  • Mid-Turn Steering & Quota Probes: Steer active turns on the fly, approve tool calls, and check 5h / 7d rate-limit windows.

Supported Coding Agents

Provider ID Native CLI Protocol Bridged Local Session & Live Tail Discovery Mid-Turn Steering Quota / Usage Probe
Claude Code claude claude --print --input-format stream-json --output-format stream-json --verbose ~/.claude/projects/<slug>/*.jsonl Live user stream frame control_request (get_usage) & OAuth metadata
OpenAI Codex codex codex app-server (thread/start, thread/resume, turn/start) ~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl turn/steer (expectedTurnId) account/rateLimits/read
xAI Grok grok grok --permission-mode auto agent stdio (ACP + _x.ai/*) ~/.grok/sessions/*.jsonl _x.ai/interject _x.ai/billing
Google Antigravity agy agy --conversation <id> -p --input-format stream-json --output-format stream-json ~/.gemini/antigravity-cli/brain/<id>/.system_generated/logs/transcript.jsonl Live user stream frame Session activity metadata
Generic ACP acp Any standard ACP-compliant binary over stdio session/list RPC _session/steering Standard ACP usage metadata

Installation

.NET Global Tool (acplite CLI)

dotnet tool install --global Acplite

NuGet Library (Acplite.Sdk)

dotnet add package Acplite.Sdk

Standalone Binaries

Every release also ships a single self-contained executable, built with NativeAOT, that needs no .NET runtime installed:

Platform Archive
Linux x64 acplite-linux-x64.tar.gz
Linux arm64 acplite-linux-arm64.tar.gz
macOS Intel acplite-osx-x64.tar.gz
macOS Apple Silicon acplite-osx-arm64.tar.gz
Windows x64 acplite-win-x64.zip

Quick Start (CLI)

# 1. Discover installed coding agents on your machine
acplite providers

# 2. List active & recent sessions across Claude, Codex, Grok, and Antigravity
acplite sessions
acplite sessions agy

# 3. Live-tail an active terminal session in real time
acplite tail <session-id>

# 4. Run or resume a session interactively
acplite run claude "Refactor the auth middleware to use SemaphoreSlim" --cwd /path/to/repo
acplite run agy "Add unit tests for the new parser" --session <conversation-id>

# 5. Check account rate-limit & quota windows
acplite usage

C# SDK Usage

using Acplite.Sdk;
using Acplite.Sdk.Protocol;

await using var runtime = new AcpliteRuntime();

// 1. Discover installed providers & recent local sessions
var providers = await runtime.DiscoverProvidersAsync(cancellationToken: ct);
var sessions = await runtime.DiscoverSessionsAsync(providerFilter: null, maxSessionsPerProvider: 25, ct);

// 2. Start or resume a session on any provider
await using var session = await runtime.StartSessionAsync(new AcpSessionConfig
{
    Provider = AgentProviderKind.Claude,
    WorkingDirectory = "/Users/me/project",
    SessionId = sessions.FirstOrDefault()?.SessionId,
    ResumeExisting = true,
    AutoApproveTools = false
}, ct);

// 3. Stream unified events (thinking, text deltas, tool calls, permission requests)
_ = Task.Run(async () =>
{
    await foreach (var ev in session.ReadEventsAsync(ct))
    {
        switch (ev)
        {
            case AcpThinkingDeltaEvent thought:
                Console.Write(thought.Delta);
                break;
            case AcpAssistantTextDeltaEvent text:
                Console.Write(text.Delta);
                break;
            case AcpPermissionRequestEvent perm:
                await session.RespondPermissionAsync(perm.RequestId, approved: true, cancellationToken: ct);
                break;
        }
    }
});

// 4. Send a prompt, steer mid-turn, queue next-turn messages, or interrupt
await session.SendPromptAsync("Inspect the failing tests and fix the race condition.", ct);
await session.SteerAsync("Use SemaphoreSlim instead of lock.", ct);
await session.EnqueuePromptAsync("After fixing the tests, update the XML docs.", ct);
// Or interrupt the active turn and immediately start a new turn:
// await session.InterruptAndSendPromptAsync("Stop and check the build config first.", ct);

Stdio ACP Bridge for Editors & Hosts

Run acplite serve <provider> to expose any supported CLI as a standards-compliant ACP JSON-RPC 2.0 server over stdin/stdout for Zed, JetBrains, Neovim, or any ACP host:

{
  "agent_servers": {
    "claude": {
      "command": "acplite",
      "args": ["serve", "claude"]
    },
    "codex": {
      "command": "acplite",
      "args": ["serve", "codex"]
    },
    "antigravity": {
      "command": "acplite",
      "args": ["serve", "agy"]
    },
    "grok": {
      "command": "acplite",
      "args": ["serve", "grok"]
    }
  }
}

Architecture

flowchart LR
    subgraph Hosts["ACP Hosts & .NET Apps"]
        T["Tunnelite\n(tunnelite acp)"]
        Z["ACP Editors & IDEs\n(Zed · JetBrains · Neovim)"]
        A[".NET 8 / 10 Apps\n(Acplite.Sdk)"]
    end

    subgraph Core["Acplite (NativeAOT C#)"]
        R["AcpliteRuntime\nUnified Session & Event Multiplexer"]
        B["AcpStdioServerBridge\nJSON-RPC 2.0 ACP over stdio"]
        W["TranscriptTailer\nByte-Offset FileSystemWatcher"]
    end

    subgraph Adapters["Native Provider Bridges"]
        C["ClaudeCodeAdapter\n(stream-json + control_request)"]
        X["CodexAdapter\n(codex app-server JSON-RPC)"]
        G["GrokAdapter\n(agent stdio + _x.ai/*)"]
        Y["AntigravityAdapter\n(agy stream-json + brain logs)"]
    end

    T --> R
    A --> R
    Z <-->|"stdio JSON-RPC"| B
    B --> R
    R --> W
    R --> C
    R --> X
    R --> G
    R --> Y

.NET Packages

Package Description
Acplite The acplite command-line tool and stdio ACP server bridge.
Acplite.Sdk AcpliteRuntime and native C# ACP adapters for claude, codex, grok, and agy.

Development

dotnet build -c Release
dotnet test test/Acplite.Tests -c Release --no-build

License

This project is licensed under the MIT License.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
0.2.1 127 10/27/2026
0.2.0 104 10/27/2026
0.1.4 106 10/27/2026
0.1.3 99 10/26/2026
0.1.2 99 10/26/2026
0.1.1 102 10/26/2026
0.1.0 97 10/26/2026