A personal AI assistant. Designed from research, not assembled from plugins.
Talk to it from Telegram. Edit its behavior — your todos, journal, even what it can do — by editing plain text. One vault, one binary, no database.
A personal AI assistant you reach over Telegram or the CLI. Its memory — your todos, the people you know, your journal, your knowledge — lives as .md files in a directory you control. Even the assistant's capabilities are markdown files in that same directory.
You don't configure it through a settings screen. You open a text editor, change a file, and the next message picks up the change.
nix run github:purplenoodlesoop/horizon
The "vault" is a directory of .md files with YAML frontmatter. Nothing more. Edit it with anything that touches text — vim, VS Code, Obsidian, your phone's notes app, cat > foo.md. The harness reads files; it doesn't care which editor wrote them. No Obsidian SDK, no plugin, no integration — just files.
Horizon isn't a competitor to the model — it uses a model (Kimi K2.6 on CrofAI by default, any OpenAI-compatible endpoint works). It adds what chat apps deliberately don't do:
grep it, edit it, git-version it. No opaque "memory feature."curl + jq + your filesystem is the kit. No app store.OpenClaw and Hermes Agent are the closest neighbors. Horizon is a smaller, different bet:
Hermes uses SQLite. OpenClaw uses an opinionated workspace with injected prompt files. Horizon has neither — capabilities, messages, turns, schedules, audit log are all .md in whatever directory you pointed --vault at.
One YAML entry, hot-reloaded per event. No server lifecycle, no plugin SDK, no marketplace. Adding a tool from your phone takes thirty seconds.
The heartbeat is signal-driven. A pure-Dart filter checks which capabilities are due before any LLM call. Nothing due = zero tokens. Not "a little." Zero.
Hermes autonomously writes and edits its own skills. Horizon's skill-reflector only proposes. Promotion is an explicit /promote <id> from Telegram, or you move the file yourself.
The architectural choices have a paper trail:
Centralized over multi-agent — Tran & Kiela, Single-Agent LLMs Outperform Multi-Agent Systems on Multi-Hop Reasoning Under Equal Thinking Token Budgets. arXiv:2604.02460
Capabilities-as-skills, and why "semantic confusability among similar skills" is the real ceiling — Li, When Single-Agent with Skills Replace Multi-Agent Systems and When They Fail. arXiv:2601.04748
Filesystem-as-manifest over vector RAG — Sun et al., Don't Retrieve, Navigate (Corpus2Skill). arXiv:2604.14572
Signal-driven heartbeat — the HEARTBEAT_OK sentinel and pre-LLM filter are borrowed verbatim from OpenClaw's heartbeat doc; the same wake-gate idea is cross-checked against Hermes Agent's cron/scheduler.py.
# .env in your current directory TELEGRAM_TOKEN=... TELEGRAM_USERNAME=your-handle # or: alice,bob,carol LLM_TOKEN=... nix run github:purplenoodlesoop/horizon
First run bootstraps an empty vault with a default capability bundle. Edit anything in any markdown editor — the next message picks it up. The README covers the rest: schedules, voice memos, attachments, admin commands, security, cost.