@n1creator/openacp-cli 2026.712.8 → 2026.712.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,10 +1,10 @@
1
- OpenACP — self-hosted bridge that connects 28+ AI coding agents (Claude Code, Codex, Gemini, Cursor) to Telegram, Discord & Slack. Your machine, your keys, your data.
1
+ OpenACP — self-hosted bridge that connects 28+ AI coding agents (Claude Code, Codex, Gemini, Cursor) to chat, REST, and SSE, with native bridge-agnostic speech-to-text. Your machine, your keys, your data.
2
2
 
3
3
  <div align="center">
4
4
 
5
5
  # OpenACP
6
6
 
7
- **Control AI coding agents from Telegram, Discord & Slack**
7
+ **Control AI coding agents from Telegram, Discord & Slack — or automate them through REST and SSE**
8
8
 
9
9
  Send a message. The agent writes code. You see everything — in real time.
10
10
 
@@ -25,18 +25,20 @@ Send a message. The agent writes code. You see everything — in real time.
25
25
  > **N1 Creator distribution.** This repository publishes the maintained fork as
26
26
  > `@n1creator/openacp-cli` and `@n1creator/openacp-plugin-sdk`. Existing OpenACP
27
27
  > workspaces remain compatible; migrate by replacing the global CLI package and
28
- > restarting the same instance.
28
+ > restarting the same instance. The maintained CLI includes native local
29
+ > faster-whisper STT and keeps the speech pipeline independent from any one
30
+ > messaging adapter.
29
31
 
30
32
  ## What is OpenACP?
31
33
 
32
- OpenACP is a self-hosted bridge that connects AI coding agents to your messaging platforms. You chat with an AI agent through Telegram, Discord, or Slack — it reads your codebase, writes code, runs commands, and streams results back to you in real time.
34
+ OpenACP is a self-hosted bridge that connects AI coding agents to messaging and automation channels. Chat through Telegram, Discord, or Slack, or send prompts and attachments through REST/SSE the agent reads your codebase, writes code, runs commands, and streams results back in real time.
33
35
 
34
36
  Built on the open [Agent Client Protocol (ACP)](https://agentclientprotocol.org/). Your machine, your keys, your data.
35
37
 
36
38
  ```
37
- You (Telegram / Discord / Slack)
39
+ You (Telegram / Discord / Slack / REST / SSE)
38
40
 
39
- OpenACP (bridge + session manager)
41
+ OpenACP (bridge + session manager + speech service)
40
42
 
41
43
  AI Agent (Claude Code, Codex, Gemini, Cursor, ...)
42
44
 
@@ -59,6 +61,7 @@ Your Codebase
59
61
  - **Team visibility** — Share a Discord channel where everyone sees what the AI agent is doing in real time — no more black-box coding sessions.
60
62
  - **Multi-agent workflows** — Start with Claude Code for planning, switch to Codex for implementation, use Gemini for review — all in one chat thread, no reconfiguration.
61
63
  - **CI/CD integration** — Trigger agent sessions from GitHub Actions or any issue tracker via the REST API.
64
+ - **Voice-driven workflows** — Send audio from any compatible bridge; OpenACP transcribes it locally before the agent receives the prompt.
62
65
  - **Self-hosted AI gateway** — Keep API keys and code on your own infrastructure. No third-party cloud, no vendor lock-in.
63
66
  - **Local LLM support** — Run agents against self-hosted models (Ollama, LM Studio) via ACP-compatible adapters. Your models, your data.
64
67
 
@@ -145,13 +148,14 @@ That's it. Send a message to your bot and start coding.
145
148
 
146
149
  ## Features
147
150
 
148
- ### Messaging Platforms
151
+ ### Channels and Bridges
149
152
 
150
153
  | Platform | Status | Highlights |
151
154
  |----------|--------|------------|
152
155
  | **Telegram** | Stable | Forum topics per session, streaming, permission buttons, voice |
153
156
  | **Discord** | Stable | Thread-based sessions, slash commands, button interactions |
154
157
  | **Slack** | Stable | Socket Mode, channel-based sessions, thread organization |
158
+ | **REST API / SSE** | Stable | Session automation, base64 file/audio attachments, streamed events |
155
159
 
156
160
  ### Core
157
161
 
@@ -161,6 +165,9 @@ That's it. Send a message to your bot and start coding.
161
165
  - **Permission control** — Approve or deny agent actions via buttons, with optional auto-approve
162
166
  - **Real-time streaming** — See agent thinking, tool calls, and output as they happen
163
167
  - **Agent switching** — Switch agents mid-conversation with `/switch`; history carries over automatically
168
+ - **Dynamic model options** — Model, mode, and reasoning choices come from each ACP agent at runtime instead of a hard-coded model list
169
+ - **Agent-aware audio routing** — Pass audio directly to agents that support it; otherwise transcribe it through the shared STT service
170
+ - **Scoped proxy routing** — Route Telegram, individual ACP agents, services, or plugin flows independently through HTTP, HTTPS, SOCKS5, or SOCKS5H profiles
164
171
 
165
172
  ### Developer Tools
166
173
 
@@ -168,14 +175,69 @@ That's it. Send a message to your bot and start coding.
168
175
  - **Built-in file viewer** — Monaco Editor with syntax highlighting, diffs, and markdown preview
169
176
  - **Session transfer** — Move sessions between terminal and chat (`/handoff`)
170
177
  - **Agent switch** — Change which AI agent handles your session mid-conversation (`/switch`)
171
- - **Voice & speech** — Native local faster-whisper or Groq STT, plus optional Edge TTS
178
+ - **Voice & speech** — Bundled local faster-whisper or Groq STT for every compatible bridge, plus optional Edge TTS
172
179
  - **Usage tracking** — Token counts, cost reports, optional monthly budget limits
173
180
  - **Context resume** — Resume sessions with full conversation history
174
181
 
182
+ ### Native Speech-to-Text Across Bridges
183
+
184
+ The maintained package includes the `local-whisper` provider in the built-in
185
+ `@openacp/speech` service. STT runs in the shared session pipeline rather than
186
+ inside Telegram, so the same behavior applies to Telegram voice messages,
187
+ REST/SSE audio attachments, and external adapters that submit a standard
188
+ attachment with `type: "audio"`.
189
+
190
+ ```text
191
+ audio attachment from any compatible bridge
192
+ → agent supports native audio? send audio directly
193
+ → otherwise: local faster-whisper or Groq STT
194
+ → append transcript to the prompt and call the agent
195
+ ```
196
+
197
+ - **Private local mode** — `local-whisper` runs on the OpenACP host with no API key.
198
+ - **Bundled runtime** — The CLI ships the transcription script and reuses the model/venv cache at `~/.cache/codex/transcribe-voice`.
199
+ - **Pluggable providers** — Select local Whisper or Groq, or register another STT provider through the plugin SDK.
200
+ - **Safe fallback** — If transcription fails, OpenACP keeps the original audio attachment instead of discarding it.
201
+ - **Audio-aware agents** — Agents advertising native audio capability receive the original attachment without unnecessary transcription.
202
+
203
+ Local Whisper needs Python 3 plus `uv` or `python3-venv`; its environment and
204
+ selected model are prepared on the first transcription. Configure it through
205
+ `/settings`, the plugin settings API, or `openacp config`. See
206
+ [Voice and Speech](docs/gitbook/using-openacp/voice-and-speech.md) for settings,
207
+ formats, providers, and troubleshooting.
208
+
209
+ ### Scoped Proxy Routing
210
+
211
+ OpenACP can proxy only the flows that need it instead of exporting one proxy for
212
+ the whole daemon. Profiles (where to connect) are separate from routes (what uses
213
+ the profile), and every route is `direct`, `inherit`, or `profile:<id>`.
214
+
215
+ ```text
216
+ global: direct
217
+ channels.telegram: profile:usa
218
+ agents.codex: profile:usa
219
+ agents.cursor: direct
220
+ services.default: direct
221
+ ```
222
+
223
+ Telegram polling, outgoing Bot API calls, and Telegram file downloads share the
224
+ `channels.telegram` route. ACP subprocesses receive a per-agent environment;
225
+ `direct` explicitly removes inherited proxy variables. Local REST/SSE traffic is
226
+ not globally intercepted. Credentials live in a separate mode-0600 secret store
227
+ and never appear in route files, agent definitions, status responses, or
228
+ structured OpenACP logs.
229
+
230
+ Manage routes from any connector with `/proxy`, from the CLI with
231
+ `openacp proxy`, or through `/api/v1/proxy`. Channel changes are tested before
232
+ they are saved. See [Scoped Proxy Routing](docs/gitbook/features/proxy-routing.md).
233
+
175
234
  ### Operations
176
235
 
177
236
  - **Daemon mode** — Run as a background service with auto-start on boot
178
237
  - **CLI API** — Full REST API for automation (`openacp api ...`)
238
+ - **Fast first session** — A liveness-checked warm pool keeps the default agent ready, avoiding a full subprocess spawn on the first API session
239
+ - **Consistent health reporting** — `/api/health` merges persisted and live-only sessions so active and total counts describe the same population
240
+ - **Secret-safe agent inspection** — Agent list, reload, and detail API responses redact environment values while preserving variable names
179
241
  - **Plugin system** — Install adapters as npm packages
180
242
  - **Doctor diagnostics** — `openacp doctor` checks everything and suggests fixes
181
243
  - **Structured logging** — Pino with rotation, per-session log files
@@ -224,13 +286,42 @@ openacp doctor # System diagnostics
224
286
  # Sessions & API (requires running daemon)
225
287
  openacp api new [agent] [workspace]
226
288
  openacp api status
289
+ openacp api health
227
290
  openacp api cancel <id>
228
291
 
292
+ # Updates
293
+ openacp update # Install the latest maintained npm release
294
+
229
295
  # Tunnels
230
296
  openacp tunnel add <port> [--label name]
231
297
  openacp tunnel list
298
+
299
+ # Scoped proxy routing (requires running daemon)
300
+ openacp proxy status
301
+ openacp proxy import usa --env-file ~/.openacp/secrets/proxy.env
302
+ openacp proxy create backup --from-json ~/.openacp/secrets/backup-proxy.json
303
+ openacp proxy update backup --from-json ~/.openacp/secrets/backup-proxy.json
304
+ openacp proxy set channels.telegram profile:usa
305
+ openacp proxy set agents.codex profile:usa
306
+ openacp proxy test --scope channels.telegram
232
307
  ```
233
308
 
309
+ The protected JSON file supports a Quick URL mode: use either separate
310
+ `protocol`, `host`, and `port` fields or one write-only `proxyUrl` such as
311
+ `{"proxyUrl":"socks5h://user:password@proxy.example:1080"}`. The two forms are
312
+ mutually exclusive. A URL must include an explicit port; credentials are parsed
313
+ and stored separately, and the original URL is never persisted or returned.
314
+
315
+ The connector-neutral `/proxy` interface now provides admin-only add/edit,
316
+ candidate test-before-save, credential clearing, paginated route controls, and
317
+ atomic delete-with-reassignment. Telegram deletes credential replies before use;
318
+ if that guarantee is unavailable, OpenACP refuses the value and directs the
319
+ operator to a mode-0600 CLI/API input file.
320
+
321
+ Use a unique Telegram bot for each OpenACP instance. Command synchronization has
322
+ one heartbeat-backed owner per public bot ID and a second instance will not
323
+ modify the first instance's command menus.
324
+
234
325
  > **Full CLI reference** — [CLI Commands](https://openacp.gitbook.io/docs/api-reference/cli-commands)
235
326
 
236
327
  ## Documentation
@@ -272,6 +363,9 @@ Set a monthly budget limit in your config. OpenACP tracks token usage and cost i
272
363
  ### Can I use a local or self-hosted LLM?
273
364
  Yes, if the model has a compatible agent CLI. Any agent that implements the ACP protocol can be registered. Community adapters exist for Ollama and LM Studio — run `openacp agents` to browse available options.
274
365
 
366
+ ### Does speech input only work in Telegram?
367
+ No. STT is part of the shared session pipeline. Telegram already converts voice and audio messages into standard audio attachments, while the REST API and SSE bridge accept base64 audio attachments. Any external adapter gets the same behavior when it submits an attachment with `type: "audio"`. If the selected agent supports native audio, OpenACP passes the audio through; otherwise it transcribes it with the configured STT provider.
368
+
275
369
  ### What happens if the agent gets stuck or the chat hangs?
276
370
  Use `/cancel` in your chat to stop the current session. Run `openacp doctor` to check for connectivity or configuration issues. OpenACP's session persistence means you can resume with full context intact after a restart.
277
371
 
@@ -289,6 +383,10 @@ Yes. OpenACP is MIT-licensed and free to self-host. You only pay for the AI prov
289
383
  openacp update
290
384
  ```
291
385
 
386
+ On Telegram, administrators can also run `/update`; OpenACP waits for npm to
387
+ finish and then requests a managed daemon restart. Do not run a second npm
388
+ install or stop the service while that update is in progress.
389
+
292
390
  To migrate from the upstream npm package:
293
391
 
294
392
  ```bash