Getting started
Install Horus, initialize a project, and run your first investigation in minutes.
This guide takes you from a fresh machine to a working Horus investigation. Horus is intentionally local-first: it runs on your workstation and reads from your existing systems. It never writes to production.
What Horus is
Horus is an open-source, local-first incident investigation engine. It connects runtime evidence — logs, metrics, queue state, database state — with source intelligence to produce deterministic, evidence-backed reports.
Unlike a dashboard or alerting tool, Horus does not detect incidents. It reconstructs what happened after an incident is reported, ranks suspected causes, and tells you where to look next.
Prerequisites
- Node.js 22 or later — Horus CLI runs on Node.
- No database to install — investigation history is persisted in an embedded local store at
~/.horus. - Python 3.11+ with uv — only if you want the optional source-intelligence backend. The backend itself ships inside the Horus bundle; Python and uv are the only prerequisite.
- A Git repository you want to investigate.
Source intelligence is optional for runtime-only investigations
You can investigate runtime signals without the source-intelligence backend, but source context, impact analysis, and queue-boundary stitching will be degraded. Most users install it. Read more on the Source intelligence page.
Install Horus
Choose one of the following install methods. All three install the same horus binary.
curl installer
curl -fsSL https://horus.sh/install.sh | bashThe curl installer downloads the CLI from GitHub Releases and installs the optional source-intelligence backend from the wheel bundled with the same release — the backend ships inside the Horus bundle, not on PyPI. It does not configure runtime connectors.
npm
npm install -g @merittdev/horusHomebrew
brew install meritt-dev/tap/horusVerify the install
Run horus --version to confirm the binary is on your PATH.
Initialize a project
Change into the repository you want to investigate and run horus init. This is the single onboarding command. It checks prerequisites (the optional source-intelligence backend — advisory only, with fix-it hints), creates a .horus/config.json in the project root, registers the project in the global registry at ~/.horus/registry.json, starts or reuses the source-intelligence host, indexes the code and stitches the queue map, and refreshes the project-knowledge snapshot.
cd /path/to/your-repo
horus initZero-infrastructure local persistence
Investigation history is kept in an embedded local store at ~/.horus — there is nothing to install or run before horus init. Teams that want shared, multi-user state use Horus Cloud.
If you have a source-intelligence host already running, point Horus at it during init. The URL is recorded verbatim and the local host spawn and index are skipped:
horus init --source http://127.0.0.1:8420Re-running horus init is idempotent: it reuses a healthy host and refreshes the index. If the source-intelligence backend is not installed, init still writes and registers the config, skips indexing with an install hint, and exits 0 — investigations then run in degraded, runtime-only mode. You can check host status anytime with horus hosts.
Connect runtime evidence (optional)
Runtime connectors give investigations logs, metrics, errors, and queue and database state. Add them with horus connect <type>:
horus connect elasticsearch
horus connect sentry
horus connect redisSee the Connectors page for every supported type and its options.
Run your first investigation
Investigations start from a hint: an alert name, a log line, a symptom, or a free-text description. Horus resolves the hint to evidence, ranks suspected causes, and returns a report.
horus investigate "checkout latency spike"By default, the report is printed as readable text. You can also request JSON or Markdown:
horus investigate --format json "checkout latency spike"
horus investigate --format markdown "checkout latency spike"Optional AI narrative
Add --ai to enrich the deterministic report with an AI-generated narrative. The AI only explains the evidence; it does not create evidence. If the AI provider is unavailable, Horus falls back to the deterministic report.
List and replay investigations
Every investigation is saved to your local store at ~/.horus. List recent investigations to get their IDs:
horus investigationsReplay a saved investigation to re-render the report without re-querying your systems:
horus replay <id>Generate a postmortem
Once you have an investigation ID, draft a postmortem in Markdown:
horus postmortem <id> --output ./postmortem.mdCommon first-run issues
| Symptom | Likely cause | Fix |
|---|---|---|
horus investigate cannot open the local store | A single-file build is missing its embedded-database assets. | Reinstall with the curl installer (install.sh) or npm install -g @merittdev/horus — the embedded store assets ship with those installs. |
horus init skips indexing (source-intelligence backend not installed) | The backend is not installed or not running. | Re-run the curl installer, or install Python + uv, then re-run horus init. |
horus investigate returns no evidence | No runtime connectors are configured. | Use horus connect to add Elasticsearch, MongoDB, PostgreSQL, Grafana, Redis, Sentry, Axiom, or Shopify connectors, or run with only source intelligence. |
Next steps
See the Installation page for uninstall and update notes, the CLI reference for every command, and the Connectors page to wire in runtime evidence sources.