ProtoAgent
ProtoAgent is a local-first coding agent built around a fast Rust terminal UI and a Python core powered by ProtoLink. Its runtime is designed to give smaller models narrow roles, bounded evidence, and deterministic completion checks instead of one large prompt with every tool attached.
Release 0.2.0 covers the active proto-cli and protoagent-core
components. The ACP editor bridge remains a planned 0.0.0-dev.0 component.
See VERSIONING.md and CHANGELOG.md.
Why ProtoAgent
- Small-model first:
small,medium,large, andapiprompt profiles tune delegation depth without changing the safety boundary. - Visible context: Context Loom incrementally indexes the workspace and builds a bounded, source-cited Context Pack before inference.
- Narrow agent roles: Architect coordinates; Explorer reads the repository; Coder prepares policy-gated changes; optional Scout researches the public web.
- ProtoLink as the engine: ProtoLink owns agent discovery, delegation, tools, state, events, approvals, cancellation, transports, and run reports.
- Runtime completion checks: ProtoAgent derives an application-level
RunContractand does not treat unsupported prose as a completed write task. - Operator-visible behavior: the Rust CLI exposes provider, model, context, agent, readiness, timeline, trace, diff, and session state.
Architecture
| Surface | Status | Responsibility |
|---|---|---|
cli/ |
Active, 0.2.0 |
Rust CLI/TUI, project and model controls, approvals, cancellation, and diagnostics. |
core/ |
Active, 0.2.0 |
Python application logic, Context Loom, prompt profiles, agent factories, and the ProtoLink runtime bridge. |
acp/ |
Planned, 0.0.0-dev.0 |
Future editor-facing Agent Client Protocol adapter. |
The default coding deck is intentionally asymmetric:
| Role | State | Authority |
|---|---|---|
| Architect | Persistent project conversation | Plans, delegates, and produces the final response; no workspace tools. |
| Explorer | Task-local | Reads and searches the selected workspace. |
| Coder | Task-local | Prepares file changes; every write crosses the approval boundary. |
| Scout | Tool-only, no memory, disabled by default | Exposes ProtoLink's bounded web_search and fetch_url tools with network.read. |
Scout is optional because external research changes the privacy and trust boundary. Enable it only when a task needs current public information:
proto-cli agents scout on
Or inside the TUI:
/agents scout on
The setting applies to the next run. When enabled, Scout is registered with the
same ProtoLink mesh, so Architect can discover it and call its tools. Search and
fetched text are treated as untrusted input; Scout has no workspace
tools. Brave search uses BRAVE_SEARCH_API_KEY; DuckDuckGo is keyless
best-effort search, and English Wikipedia is keyless factual search.
For the complete design, read the whitepaper and the maintainer documentation.
Install
Requirements:
- Python 3.12 or newer
- Rust toolchain with Cargo 1.83 or newer
- a supported local or API model provider
Release staging note: ProtoLink 0.6.6 must be available from the selected package index before the ProtoAgent 0.2.0 install can resolve.
git clone https://github.com/nMaroulis/protoagent.git
cd protoagent
python3 -m venv .venv
source .venv/bin/activate
python -m pip install "protolink[http,llms]>=0.6.6"
python -m pip install -e core
cargo build --release --locked --manifest-path cli/Cargo.toml
Start the TUI from the repository root:
cargo run --locked --manifest-path cli/Cargo.toml -- project set /path/to/project
cargo run --locked --manifest-path cli/Cargo.toml -- start
Or run one task:
cargo run --locked --manifest-path cli/Cargo.toml -- run \
"explain the authentication flow and propose a safer change"
Useful first checks:
cargo run --locked --manifest-path cli/Cargo.toml -- version
cargo run --locked --manifest-path cli/Cargo.toml -- check
cargo run --locked --manifest-path cli/Cargo.toml -- agents
Provider setup, every CLI command, Context Loom behavior, and troubleshooting are covered in the documentation.
Safety And Privacy
Coder tools declare workspace.write. Before a write runs, ProtoLink policy
emits a typed approval request with a text/x-diff preview, and the application
returns a correlated approval decision. Esc or Ctrl-C requests cancellation
through ProtoLink's task-control path.
“Local-first” describes the default architecture, not a guarantee that every
configuration is offline. Local providers can keep model traffic on the
machine. API providers send model inputs to their configured endpoint, and
enabling Scout sends search/fetch requests to public internet services. Durable
ProtoLink trace output is opt-in through PROTOAGENT_TRACE=1.
Project Status
The Rust CLI and Python core are the supported surfaces in 0.2.0. The
ACP directory is a roadmap placeholder; it is not currently an
installable editor server. Contributions should keep code, CLI help, readiness
output, docs, tests, and the changelog aligned.
License
ProtoAgent is available under the MIT License.
No comments yet
Be the first to share your take.