Installation
Prerequisites
Section titled “Prerequisites”- Elixir >= 1.16
- Erlang/OTP >= 26
- SQLite3 (required by
exqlite) - An LLM API key (Anthropic, OpenAI, or both)
brCLI (optional, for burst execution with beads)
Install
Section titled “Install”# Clone the repositorygit clone https://github.com/chrisaddy/annihilation.gitcd annihilation
# Install dependenciesmix deps.get
# Compile the projectmix compile
# Set up API keysexport ANTHROPIC_API_KEY="sk-ant-..."# and/orexport OPENAI_API_KEY="sk-..."Dependencies
Section titled “Dependencies”Phase 00 installs the following Mix dependencies (from mix.exs):
| Dependency | Version | Purpose |
|---|---|---|
exqlite | ~> 0.23 | SQLite3 persistence for beads database |
jason | ~> 1.4 | JSON encoding/decoding |
yaml_elixir | ~> 2.11 | YAML parsing |
mint | ~> 1.6 | HTTP client for SSE streaming to LLM APIs |
castore | ~> 1.0 | CA certificates for TLS |
toml | ~> 0.7 | TOML parsing for config files |
stream_data | ~> 1.0 | Property-based testing (dev/test only) |
ex_doc | ~> 0.34 | Documentation generation (dev only) |
Configuration
Section titled “Configuration”Configuration is loaded by Annihilation.Config from two locations, with project-local settings taking precedence:
| Location | Purpose | Precedence |
|---|---|---|
~/.annihilation/config.toml | Global user settings | Lower |
$PROJECT_ROOT/.annihilation/config.toml | Project-local overrides | Higher |
The config loader automatically detects the project root by walking up the directory tree looking for .annihilation/ or .git/ directories.
[llm]default_provider = "anthropic"default_model = "claude-sonnet-4-20250514"
[tui]fps = 30theme = "dark"
[security]shell_allowlist = ["git", "mix", "elixir", "cat", "ls", "grep"]Initializing a project
Section titled “Initializing a project”Create the .annihilation/ directory in your project root:
mkdir -p .annihilation# Optionally create a project-local configtouch .annihilation/config.tomlInstall br (optional)
Section titled “Install br (optional)”For burst execution with beads-based task management:
curl -fsSL "https://raw.githubusercontent.com/Dicklesworthstone/beads_rust/main/install.sh" | bashbr initVerify Installation
Section titled “Verify Installation”# Run the test suitemix test
# Start the application (starts the OTP supervision tree)iex -S mixOnce started, the supervision tree boots with 6 children:
Annihilation.Event.Registry— Registry-based PubSubAnnihilation.Beads.Keeper— SQLite database ownerAnnihilation.Session.Store— JSONL session persistenceAnnihilation.Agent.Supervisor— DynamicSupervisor for agentsAnnihilation.Tether.QuestionQueue— Human-operator question queueAnnihilation.Burst.Manager— Burst/wave orchestration