A minimal agent harness designed in Rust.
Design goals:
- Artisanal code
- At the current stage only the core and provider abstraction is artisanal (handwritten)
- Minimal system prompt bloat
- First class support for local/small language models
- Client agnostic (not TUI centric)
- Client-server architecture so you can always attach your own UI
- Will ship with WebUI
- Client-server architecture so you can always attach your own UI
- Provider-agnostic
- Will support OpenAI compatible API initially
- Sane default tools
- File edit healing with diffs
- Context-length aware read
- Context-length aware web fetch
- Shell command parsing to better classify safety:
- Automatic rewriting of commands like
find ... -exec {...} - Sed commands
sed -n '{1,10}p'are rewritten tohead -n 10 - Escaping of
"and\characters in shell commands
- Automatic rewriting of commands like
- Subagents (model customizable)
Very barebones, but definitely useable.
- Configure provider with env vars:
PROVIDER_TYPE=openai-chat-completions
PROVIDER_BASE_URL=https://opencode.ai/zen/v1
PROVIDER_API_KEY=dummy
MODEL=north-mini-code-free(model discovery not yet supported)
2. Run web server: cargo run -p agent-server
3. Run webui: cd webui && pnpm dev
TODO:
- tokenize message with provider to check token consumption
- query LLM parameters directly from provider
- refactor session history handling in agent core
A primary goal of auger is to have a codebase that should be easy to understand. Generating lots of code with LLMs is contrary to this goal. Some LLM generated code may still live around for prototyping. This list tracks what is currently "artisanal" and what isn't/
- auger-core (Main agentic loop and harness)
- auger-driver (Minimal agent state machine)
- provider (Provider abstraction)
- agent webserver
- 90% there.
- tools (Tool abstraction and builtin tools)
- tool call healer
- webui (WebUI client for the agent)
- openai compatible and anthropic API providers.
Contributors are not prohibited from using AI agents. Any code generated should be high quality and blend into the surrounding codebase.
In summary:
- Clankers are allowed for prototyping and scaffolding.
- Any code that isn't understood must be replaced.
- Don't use clankers to write documentation for things you don't understand.