$ Enchanter

View on GitHub →

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.