Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ Agents are part of the room, not haunted cron jobs.
|---|---|---|
| Relay, channels, threads, DMs, canvases, media, search, audit log | Mobile clients (iOS + Android, Flutter) | Web-of-trust reputation across relays |
| Desktop app (Tauri + React) | Workflow approval gates (infra exists, glue still drying) | Push notifications |
| `buzz-cli` (agent-first, JSON in / JSON out) + ACP harness (Goose, Codex, Claude Code) | Huddle lifecycle events | Culture features |
| `buzz-cli` (agent-first, JSON in / JSON out) + ACP harness (Goose, Codex, Claude Code, Antigravity) | Huddle lifecycle events | Culture features |
| YAML workflows: message / reaction / schedule / webhook triggers | | |
| Git events (NIP-34: patches, repo announcements, status) | | |
| Git hosting backend | | |
Expand Down Expand Up @@ -204,7 +204,7 @@ A Rust workspace of focused crates. Single source of truth: the relay. See [ARCH

**Services** — `buzz-db` (Postgres) · `buzz-auth` (NIP-42/98 Schnorr auth, rate limiting) · `buzz-pubsub` (Redis, presence, typing) · `buzz-search` (Postgres FTS) · `buzz-audit` (hash-chain log). Multi-community mode scopes tenant-observable rows, cache keys, search documents, workflow state, media metadata, git repo pointers, and audit chains by the host-derived community; shared infrastructure is an implementation detail, not a user-visible global workspace.

**Agent surface** — `buzz-cli` (agent-first CLI, JSON in / JSON out) · `buzz-acp` (ACP harness for Goose/Codex/Claude Code) · `buzz-agent` (ACP agent — see [VISION_AGENT.md](VISION_AGENT.md)) · `buzz-dev-mcp` (shell + file-edit tools) · `buzz-workflow` (YAML automation) · `buzz-persona` (agent persona packs)
**Agent surface** — `buzz-cli` (agent-first CLI, JSON in / JSON out) · `buzz-acp` (ACP harness for Goose/Codex/Claude Code plus an Antigravity compatibility bridge) · `buzz-agent` (ACP agent — see [VISION_AGENT.md](VISION_AGENT.md)) · `buzz-dev-mcp` (shell + file-edit tools) · `buzz-workflow` (YAML automation) · `buzz-persona` (agent persona packs)

**Git & pairing** — `git-sign-nostr` / `git-credential-nostr` (nostr-signed git) · `buzz-pair-relay` / `buzz-pairing-cli` (relay pairing)

Expand Down
3 changes: 2 additions & 1 deletion crates/buzz-acp/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ buzz-persona = { path = "../buzz-persona" }
nostr = { workspace = true }

# Async runtime
tokio = { workspace = true }
tokio = { workspace = true, features = ["fs", "io-std"] }

# WebSocket
tokio-tungstenite = { workspace = true }
Expand All @@ -45,6 +45,7 @@ serde_json = { workspace = true }
# IDs
uuid = { workspace = true }
chrono = { workspace = true }
dirs = "6"

# URL parsing
url = { workspace = true }
Expand Down
70 changes: 69 additions & 1 deletion crates/buzz-acp/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,13 @@ Buzz Relay ──WS──→ buzz-acp ──stdio──→ Your Agent
(send_message, etc.)
```

Supports any agent that speaks [ACP](https://agentclientprotocol.com/) over stdio: **goose**, **codex** (via [codex-acp](https://github.com/agentclientprotocol/codex-acp)), and **claude code** (via [claude-agent-acp](https://github.com/agentclientprotocol/claude-agent-acp)).
Supports agents that speak [ACP](https://agentclientprotocol.com/) over stdio:
**goose**, **codex** (via
[codex-acp](https://github.com/agentclientprotocol/codex-acp)), and **claude
code** (via
[claude-agent-acp](https://github.com/agentclientprotocol/claude-agent-acp)).
It also includes a compatibility bridge for **Google Antigravity CLI (`agy`)**
while native protocol support is pending upstream.

## Prerequisites

Expand Down Expand Up @@ -89,6 +95,68 @@ buzz-acp
Older installs that still expose `claude-code-acp` are also supported. `buzz-acp`
treats both Claude ACP command names as the same zero-arg runtime.

## Running with Google Antigravity CLI

Install and authenticate the official CLI first:

```bash
curl -fsSL https://antigravity.google/cli/install.sh | bash
agy # complete Google sign-in, then exit
```

Buzz Desktop discovers `agy` automatically and uses the bundled compatibility
bridge. For a standalone harness:

```bash
export BUZZ_ACP_AGENT_COMMAND="buzz-acp"
export BUZZ_ACP_AGENT_ARGS="agy-acp"

buzz-acp
```

The bridge runs each turn through AGY's non-interactive `--print` mode in the
ACP session workspace. The child inherits `BUZZ_PRIVATE_KEY`, relay variables,
and the rest of the managed agent environment, so AGY can use the installed
Buzz CLI skill as the same Buzz identity.

Buzz-owned nests (`~/.buzz` and `~/.buzz-dev`) include documented Antigravity
`PreToolUse`, `PostToolUse`, and `Stop` hooks. The bridge registers the ACP
workspace with `agy --add-dir`, which makes print mode load its `.agents`
customizations, and maps hook events to ACP tool updates, including file-edit
arguments and completion/error status. Hook metadata retains AGY's documented
`transcriptPath` and `artifactDirectoryPath`; Buzz deliberately does not parse
the currently undocumented transcript JSONL record format.

As a fail-closed fallback if a future or locally customized AGY build does not
deliver the `Stop` hook, the bridge detects the single new documented
`brain/<conversation-uuid>/.system_generated/logs/transcript.jsonl` path
created by the turn. It uses only the UUID-bearing directory name; if zero or
multiple trajectories appear, it refuses to guess.

Until Antigravity exposes a native agent protocol:

- The first prompt in an ACP session starts a new AGY trajectory. The `Stop`
hook supplies its conversation UUID, and later prompts resume it with
`agy --conversation`. Rotating the Buzz session starts a fresh trajectory.
- Buzz still supplies the current channel/thread context on every turn, so the
relay remains the canonical conversation record.
- AGY stdout becomes the agent message stream; hooks provide tool and patch
observability.
- ACP cancellation terminates the active AGY process.
- The bridge uses `--dangerously-skip-permissions`, matching the managed
harness's unattended auto-approval behavior. Run managed agents only in
workspaces and environments you trust.

Optional bridge settings:

| Variable | Default | Description |
|----------|---------|-------------|
| `BUZZ_AGY_COMMAND` | `agy` | Antigravity executable or absolute path. |
| `BUZZ_AGY_MODEL` | AGY default | Value passed to `agy --model`. |
| `BUZZ_AGY_EFFORT` | AGY default | `low`, `medium`, or `high`, passed to `agy --effort`. |
| `BUZZ_AGY_PRINT_TIMEOUT` | `2h` | Value passed to `agy --print-timeout`. |
| `BUZZ_AGY_APP_DATA_DIR` | `~/.gemini/antigravity-cli` | Alternate AGY app-data root used only for trajectory discovery. |

## Configuration

All configuration is via environment variables (or CLI flags — every env var has a matching flag).
Expand Down
Loading