
# Empryo
previously **SoulForge**
**The AI coding agent that edits symbols, not strings.**
Empryo reads your repository as a living system: it sequences a **genome** — a live, ranked dependency graph of every symbol — and edits through the AST, never find-and-replace.
[Website](https://empryo.com) · [Download](https://empryo.com/download) · [Benchmarks](https://empryo.com/benchmarks) · [Changelog](https://empryo.com/changelog) · [Discussions](https://github.com/proxysoul/soulforge/discussions) · [Discord](https://discord.gg/fX4H7GYSMJ)
---
**SoulForge is now Empryo** — the same symbol-level, graph-powered agent, rebuilt with a desktop app, a faster engine, and a composable core. This repository is Empryo's public home for issues and discussions.
## Install
```bash
# macOS / Linux
curl -fsSL https://empryo.com/install.sh | bash
# Windows (PowerShell)
irm https://empryo.com/install.ps1 | iex
```
```bash
brew install proxysoul/tap/empryo
winget install ProxySoul.Empryo
```
```bash
empryo --set-key anthropic sk-ant-... # or run locally with Ollama — no key required
cd your-project
empryo
```
Desktop app and prebuilt binaries: [empryo.com/download](https://empryo.com/download). Runs on **macOS, Linux, and Windows**.
## Why Empryo
Most coding agents grep, read whole files, and patch strings — they never know what depends on the code they just changed. Empryo builds understanding before it mutates anything:
- **It maps before it reads.** On launch, tree-sitter parses your repo into a live graph — every symbol, import, and call site, ranked by PageRank and git co-change. Graph queries answer in milliseconds and cost zero LLM tokens.
- **It knows the blast radius.** Before an edit, the agent sees what imports a file, what historically changes with it, and how far a change ripples — "what breaks if I touch this?" is answered before the first keystroke.
- **It edits through the AST.** 65+ symbol-level operations, atomic batches with all-or-nothing rollback, structural edits across 30+ languages, and a typecheck as the gate. Nothing breaks on whitespace.
- **It treats tokens as spend.** The graph does the navigation models usually burn context on — fewer reads, fewer steps, smaller bills at any scale.
## What's inside
| | |
|---|---|
| **Code genome** | live dependency graph: tree-sitter across 30+ languages, PageRank + git co-change ranking, blast-radius tags, millisecond search |
| **Symbol-level editing** | 65+ AST operations (atomic, with rollback) + structural edits in 30+ languages |
| **Multi-agent** | parallel explore/edit agents with a shared I/O cache — cheap models scout, strong models write |
| **Task router** | ten routable roles, any model in any seat, per tab — your own mixture of experts |
| **Time machine** | every prompt is a git checkpoint; rewind code and conversation together, land on any turn |
| **Three surfaces** | native desktop app, full terminal UI, headless CLI for scripts and CI — one genome, three phenotypes |
| **LSP + MCP** | 576+ language servers via Mason, any MCP server, 13 lifecycle hooks |
| **Free compaction** | structural context compaction with no LLM call — long sessions stay cheap |
## One agent, many brains
Empryo isn't one model in a loop — it's a crew, and you assign the seats. Every role is a routable slot that takes any model from any of the 22 providers: