$ Enchanter
A focused AI agent harness. Single Rust binary, any OpenAI-compatible provider, zero runtime dependencies. Reads your SOUL, loads your memory, finds your skills, talks to your model. Nothing more.
quick start
git clone https://github.com/andrewthecodertx/enchanter.git && cd enchanter && make install ### features
- - Single Binary — No runtime dependencies. Build it, ship it, run it anywhere.
- - Any OpenAI-Compatible Provider — Works with OpenAI, Ollama, OpenRouter, Groq, or any provider that speaks the OpenAI API.
- - SOUL-Driven Personas — Define your agent's personality, directives, and behavioral constraints in SOUL.md.
- - Persistent Memory — Memories persist across sessions with automatic summarization when the store grows.
- - Skill Discovery — Drop in SKILL.md files to teach your agent new capabilities. Compatible with the agentskills.io format.
- - MCP Integration — Connect local (stdio) and remote (HTTP) MCP servers for external tools and data.
- - Built-in Tools — 7 canonical tools: exec_command, read_file, write_file, edit_file, search_files, list_directory, memory.
- - Interactive REPL — Full readline-powered REPL with slash commands for soul, memory, skills, config, and more.
### three-layer system prompt
The system prompt is assembled in three tiers, each with a distinct role:
- 1. SOUL — Your agent's persona from SOUL.md. Stable across turns, defines identity and behavioral directives.
- 2. CONTEXT — Environment info, discovered skills index, and tool usage guidance. Rebuilt each turn.
- 3. VOLATILE — Memory entries, user profile, and timestamp. Changes frequently, fully replaceable.
### mcp servers
Connect external tools and data sources via Model Context Protocol servers. Two transport types are supported:
- - stdio — Local processes spawned by Enchanter. Auto-restarted on crash (up to 3 attempts).
- - HTTP — Remote servers via Streamable HTTP with SSE support. Session tracking with Mcp-Session-Id headers.
### usage
interactive session
enchanter single shot
enchanter -p "Explain Rust ownership in one paragraph" use a different model
enchanter -m qwen3 disable streaming
enchanter --no-stream -p "Summarize this" ### repl commands
/help — Show available commands /clear — Reset conversation history /soul — Show SOUL.md content /memory — Show loaded memory /skills — List discovered skills /config — Show resolved configuration /prompt — Show full assembled system prompt /exit — Quit ### learn more
Read the docs, explore the source, or just run it and start talking.