@aptove/aptove 0.1.0 → 0.1.2
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 +171 -0
- package/package.json +8 -7
package/README.md
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# Aptove — ACP AI Coding Agent
|
|
2
|
+
|
|
3
|
+
[](https://github.com/aptove/aptove/releases/latest)
|
|
4
|
+
[](https://www.npmjs.com/package/@aptove/aptove)
|
|
5
|
+
[](https://github.com/aptove/aptove/actions/workflows/release.yml)
|
|
6
|
+
[](https://discord.gg/gD7AMxBy9y)
|
|
7
|
+
|
|
8
|
+
A Rust CLI AI coding agent that speaks the [Agent-Client Protocol (ACP)](https://agentclientprotocol.org), supports multiple LLM providers, and connects to external MCP servers for tool use.
|
|
9
|
+
|
|
10
|
+
## Architecture
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
agent-cli Binary entry point ("aptove"), CLI parsing, modes
|
|
14
|
+
agent-core Transport, sessions, context window, agent loop, plugins
|
|
15
|
+
agent-provider-* LLM provider implementations (Claude, Gemini, OpenAI)
|
|
16
|
+
agent-mcp-bridge MCP client that connects to external tool servers
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### Core Modules
|
|
20
|
+
|
|
21
|
+
| Module | Purpose |
|
|
22
|
+
|---|---|
|
|
23
|
+
| `transport` | JSON-RPC 2.0 over stdin/stdout (ACP stdio mode) |
|
|
24
|
+
| `session` | Session lifecycle, per-session context and cancellation |
|
|
25
|
+
| `context` | Token-aware sliding context window with auto-compaction |
|
|
26
|
+
| `agent_loop` | Agentic tool-call loop (prompt → LLM → tools → repeat) |
|
|
27
|
+
| `plugin` | `LlmProvider` and `Plugin` traits, `PluginHost` registry |
|
|
28
|
+
| `config` | TOML config loading, API key resolution, validation |
|
|
29
|
+
| `system_prompt` | Prompt templates with mode/project overrides |
|
|
30
|
+
| `retry` | Exponential backoff with jitter for API calls |
|
|
31
|
+
| `persistence` | Save/load sessions to `~/.local/share/Aptove/sessions/` |
|
|
32
|
+
|
|
33
|
+
## Quick Start
|
|
34
|
+
|
|
35
|
+
### Build
|
|
36
|
+
|
|
37
|
+
```sh
|
|
38
|
+
cd agent
|
|
39
|
+
cargo build
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Run
|
|
43
|
+
|
|
44
|
+
```sh
|
|
45
|
+
# Generate a config file
|
|
46
|
+
cargo run --bin aptove -- config init
|
|
47
|
+
|
|
48
|
+
# Edit the config file to add your API key (see Configuration section below)
|
|
49
|
+
|
|
50
|
+
# Start in ACP stdio mode (for use with bridge/clients)
|
|
51
|
+
cargo run --bin aptove -- run
|
|
52
|
+
|
|
53
|
+
# Start embedded bridge + agent in a single process
|
|
54
|
+
cargo run --bin aptove -- serve --port 8765
|
|
55
|
+
|
|
56
|
+
# Start interactive chat mode
|
|
57
|
+
cargo run --bin aptove -- chat
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Configuration
|
|
61
|
+
|
|
62
|
+
The config file location follows the OS-native convention via Rust's `dirs::config_dir()`:
|
|
63
|
+
|
|
64
|
+
| OS | Config path |
|
|
65
|
+
|---|---|
|
|
66
|
+
| **macOS** | `~/Library/Application Support/Aptove/config.toml` |
|
|
67
|
+
| **Linux** | `~/.config/Aptove/config.toml` |
|
|
68
|
+
| **Windows** | `%APPDATA%\Aptove\config.toml` |
|
|
69
|
+
|
|
70
|
+
```toml
|
|
71
|
+
provider = "claude"
|
|
72
|
+
|
|
73
|
+
[providers.claude]
|
|
74
|
+
# api_key = "sk-ant-..." # Or set ANTHROPIC_API_KEY env var
|
|
75
|
+
model = "claude-sonnet-4-20250514"
|
|
76
|
+
|
|
77
|
+
[providers.gemini]
|
|
78
|
+
# api_key = "..." # Or set GOOGLE_API_KEY env var
|
|
79
|
+
model = "gemini-2.5-pro"
|
|
80
|
+
|
|
81
|
+
[providers.openai]
|
|
82
|
+
# api_key = "sk-..." # Or set OPENAI_API_KEY env var
|
|
83
|
+
model = "gpt-4o"
|
|
84
|
+
|
|
85
|
+
[[mcp_servers]]
|
|
86
|
+
name = "filesystem"
|
|
87
|
+
command = "mcp-server-filesystem"
|
|
88
|
+
args = ["/path/to/allowed/dir"]
|
|
89
|
+
|
|
90
|
+
[agent]
|
|
91
|
+
max_tool_iterations = 25
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
API keys can be set via environment variables: `ANTHROPIC_API_KEY`, `GOOGLE_API_KEY`, `OPENAI_API_KEY`.
|
|
95
|
+
|
|
96
|
+
### Test
|
|
97
|
+
|
|
98
|
+
```sh
|
|
99
|
+
cargo test
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Providers
|
|
103
|
+
|
|
104
|
+
- **Claude** — Anthropic Messages API with tool use
|
|
105
|
+
- **Gemini** — Google Generative Language API with function calling
|
|
106
|
+
- **OpenAI** — Chat Completions API with function calling (also supports compatible endpoints)
|
|
107
|
+
|
|
108
|
+
## ACP Protocol
|
|
109
|
+
|
|
110
|
+
Aptove implements the [ACP protocol](https://agentclientprotocol.org) over stdio:
|
|
111
|
+
|
|
112
|
+
- `initialize` → Returns agent info and capabilities
|
|
113
|
+
- `session/new` → Creates a session with context window
|
|
114
|
+
- `session/prompt` → Runs the agentic tool loop, streams updates
|
|
115
|
+
- `session/cancel` → Cancels an in-flight prompt
|
|
116
|
+
|
|
117
|
+
Use with [bridge](../bridge/) for WebSocket↔stdio bridging.
|
|
118
|
+
|
|
119
|
+
## Container Images
|
|
120
|
+
|
|
121
|
+
Images are published to `ghcr.io/aptove/aptove-agent` on every release.
|
|
122
|
+
|
|
123
|
+
### Linux / Windows (Docker)
|
|
124
|
+
|
|
125
|
+
```sh
|
|
126
|
+
# Pull the latest multi-arch image (amd64 + arm64)
|
|
127
|
+
docker pull ghcr.io/aptove/aptove-agent:latest
|
|
128
|
+
|
|
129
|
+
# Run interactively with config and API key
|
|
130
|
+
docker run --rm -it \
|
|
131
|
+
-v ~/.config/Aptove:/root/.config/Aptove \
|
|
132
|
+
-e ANTHROPIC_API_KEY=... \
|
|
133
|
+
ghcr.io/aptove/aptove-agent:latest chat
|
|
134
|
+
|
|
135
|
+
# ACP stdio mode (for use with the bridge)
|
|
136
|
+
docker run --rm -i \
|
|
137
|
+
-e ANTHROPIC_API_KEY=... \
|
|
138
|
+
ghcr.io/aptove/aptove-agent:latest run
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Works on Linux natively and on Windows via Docker Desktop (WSL2 backend).
|
|
142
|
+
|
|
143
|
+
### macOS (Apple Native)
|
|
144
|
+
|
|
145
|
+
Apple Native runs Linux containers directly via the macOS Virtualization.framework — no Docker Desktop required.
|
|
146
|
+
|
|
147
|
+
```sh
|
|
148
|
+
# Install the container CLI
|
|
149
|
+
brew install --cask container
|
|
150
|
+
|
|
151
|
+
# Run
|
|
152
|
+
container run \
|
|
153
|
+
-v ~/.config/Aptove:/root/.config/Aptove \
|
|
154
|
+
-e ANTHROPIC_API_KEY=... \
|
|
155
|
+
ghcr.io/aptove/aptove-agent:latest-darwin-arm64 chat
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Available Tags
|
|
159
|
+
|
|
160
|
+
| Tag | Description |
|
|
161
|
+
|-----|-------------|
|
|
162
|
+
| `latest` | Latest stable, multi-arch (amd64 + arm64) |
|
|
163
|
+
| `0.2.0` | Specific version, multi-arch |
|
|
164
|
+
| `0.2.0-linux-amd64` | Linux x64 |
|
|
165
|
+
| `0.2.0-linux-arm64` | Linux arm64 |
|
|
166
|
+
| `0.2.0-darwin-arm64` | macOS Apple Silicon (Apple Native) |
|
|
167
|
+
| `0.2.0-darwin-x64` | macOS Intel (Apple Native) |
|
|
168
|
+
|
|
169
|
+
## License
|
|
170
|
+
|
|
171
|
+
Apache-2.0
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aptove/aptove",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "ACP AI coding agent — connects to Claude, Gemini, and OpenAI",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -25,7 +25,8 @@
|
|
|
25
25
|
},
|
|
26
26
|
"files": [
|
|
27
27
|
"bin",
|
|
28
|
-
"postinstall.js"
|
|
28
|
+
"postinstall.js",
|
|
29
|
+
"README.md"
|
|
29
30
|
],
|
|
30
31
|
"scripts": {
|
|
31
32
|
"postinstall": "node postinstall.js"
|
|
@@ -34,10 +35,10 @@
|
|
|
34
35
|
"node": ">=16"
|
|
35
36
|
},
|
|
36
37
|
"optionalDependencies": {
|
|
37
|
-
"@aptove/aptove-darwin-arm64": "0.1.
|
|
38
|
-
"@aptove/aptove-darwin-x64": "0.1.
|
|
39
|
-
"@aptove/aptove-linux-arm64": "0.1.
|
|
40
|
-
"@aptove/aptove-linux-x64": "0.1.
|
|
41
|
-
"@aptove/aptove-win32-x64": "0.1.
|
|
38
|
+
"@aptove/aptove-darwin-arm64": "0.1.2",
|
|
39
|
+
"@aptove/aptove-darwin-x64": "0.1.2",
|
|
40
|
+
"@aptove/aptove-linux-arm64": "0.1.2",
|
|
41
|
+
"@aptove/aptove-linux-x64": "0.1.2",
|
|
42
|
+
"@aptove/aptove-win32-x64": "0.1.2"
|
|
42
43
|
}
|
|
43
44
|
}
|