@merittdev/horus 0.19.1 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -45,9 +45,7 @@ Horus is not another dashboard, alerting tool, or log viewer. It sits on top of
45
45
  ## Getting started
46
46
 
47
47
  ```bash
48
- horus setup
49
48
  horus init
50
- horus index
51
49
  horus connect elasticsearch # optional runtime connectors
52
50
  horus investigate "checkout latency spike"
53
51
  horus investigations # list saved IDs
@@ -80,10 +78,8 @@ Trace reconstruction is not shipped yet. Connectors are read-only and project-sc
80
78
  ## Example output (illustrative)
81
79
 
82
80
  ```bash
83
- horus investigate \
84
- --project atlas-payments \
85
- --env production \
86
- "checkout latency spike"
81
+ cd ~/code/atlas-payments
82
+ horus investigate --env production "checkout latency spike"
87
83
  ```
88
84
 
89
85
  ```text
@@ -115,7 +111,9 @@ Hint: checkout latency spike
115
111
 
116
112
  **Local-first** — Connectors read from your own clusters, not a hosted black box.
117
113
 
118
- **Project-scoped** — Every investigation belongs to a specific project and environment.
114
+ **Project-scoped** — The repo you run in (its `.horus/config.json`) is the project identity; `--config <path>` targets another repo.
115
+
116
+ **Agent-ready** — Every investigation/analysis command takes `--json` (compact by default, `--full` for the raw structure) with a `nextSteps` array to chain from. `horus packet` builds a compact, honesty-framed briefing sized for an agent's context window.
119
117
 
120
118
  ## Capabilities
121
119
 
@@ -151,7 +149,7 @@ Horus is organized in four layers:
151
149
 
152
150
  **Source Intelligence**
153
151
 
154
- - Horus source intelligence backend — code graph, semantic search, impact analysis, ownership across TypeScript/JavaScript and Python (tree-sitter).
152
+ - Horus source intelligence backend (`packages/source-py`, ships inside the bundle) — code graph, semantic search, impact analysis, ownership across TypeScript/JavaScript, Python, Go, Java, and Rust (tree-sitter).
155
153
 
156
154
  **Runtime Evidence**
157
155
 
@@ -183,7 +181,7 @@ The **only** code-intelligence gap Horus owns is **queue-boundary stitching**: t
183
181
 
184
182
  > If the Horus source intelligence backend is unavailable, Horus can still collect runtime evidence, but source context, impact analysis, change analysis, and queue stitching become degraded.
185
183
 
186
- Horus talks to the source intelligence backend over **HTTP/MCP only** (no CLI shell-outs for queries). Run `horus index` in a repository to start and register its source intelligence host.
184
+ Horus talks to the source intelligence backend over **HTTP/MCP only** (no CLI shell-outs for queries). Run `horus init` in a repository to start and register its source intelligence host.
187
185
 
188
186
  ## Configuration
189
187
 
@@ -232,28 +230,28 @@ export default defineConfig({
232
230
 
233
231
  **No connector runs without an explicit project/env scope** — there are no global connector defaults.
234
232
 
235
- **Secrets are never committed.** Connector credentials are read from environment variables at runtime. Keep them in a gitignored file (e.g. `~/.horus.env`) and `source` it before running. For a full reference on which Horus files to commit and which to gitignore, see **[docs/gitignore-guide.md](./docs/gitignore-guide.md)**.
233
+ **Secrets are never committed.** `horus connect` encrypts connector credentials at rest into `.horus/secrets.local.json` (AES-256-GCM, never `config.json`) and auto-adds `.horus/` to `.gitignore`; environment variables are also supported at runtime. For the full secrets and gitignore model, see **[horus.sh/docs/security](https://horus.sh/docs/security)**.
236
234
 
237
235
  ## Install
238
236
 
239
- See **[docs/install.md](./docs/install.md)** for full install, update, and uninstall instructions.
237
+ See **[horus.sh/docs/installation](https://horus.sh/docs/installation)** for full install, update, and uninstall instructions.
240
238
 
241
239
  ```bash
242
240
  curl -fsSL https://horus.sh/install.sh | bash
243
241
  npm install -g @merittdev/horus
244
242
  brew install meritt-dev/tap/horus
245
243
  horus --version
246
- horus setup
244
+ horus init
247
245
  ```
248
246
 
249
- The curl installer downloads the Horus CLI from GitHub Releases and attempts to install the Horus source intelligence backend. All three channels install the same `horus` binary.
247
+ The curl installer downloads the Horus CLI from GitHub Releases and installs the source intelligence backend from the wheel **bundled in the same release** — one bundle, one version, nothing on PyPI. All three channels ship the same `horus` binary with the backend wheel alongside it; `horus init` installs the backend automatically when it's missing.
250
248
 
251
249
  ### What the installer installs
252
250
 
253
251
  | Component | Role | Required |
254
252
  | --- | --- | --- |
255
253
  | **Horus CLI** | The `horus` command | Yes |
256
- | **Horus source intelligence backend** | Enables `horus index`, `horus explain`, `horus changes`, `horus architecture` | Optional |
254
+ | **Horus source intelligence backend** | Enables `horus init`, `horus explain`, `horus changes`, `horus architecture` | Optional |
257
255
 
258
256
  ### Prerequisites
259
257
 
@@ -268,16 +266,16 @@ The installer **does not** configure Elasticsearch, MongoDB, Grafana, Redis, or
268
266
  ### Direct download (without the curl installer)
269
267
 
270
268
  ```bash
271
- # Replace vX.Y.Z with the current release tag
272
- curl -fsSL https://github.com/meritt-dev/horus/releases/download/v0.12.0/horus-v0.12.0 -o horus
269
+ # Replace vX.Y.Z with the current release tag (see github.com/meritt-dev/horus/releases)
270
+ curl -fsSL https://github.com/meritt-dev/horus/releases/download/vX.Y.Z/horus-vX.Y.Z -o horus
273
271
  chmod +x horus
274
272
  sudo mv horus /usr/local/bin/horus
275
273
  horus --version
276
274
  ```
277
275
 
278
- To **update** to a newer version, re-run the installer — it overwrites the binary and leaves your config untouched. To **uninstall**, see **[docs/install.md#uninstall](./docs/install.md#uninstall)**.
276
+ To **update** to a newer version, re-run the installer — it overwrites the binary and leaves your config untouched. To **uninstall**, see **[horus.sh/docs/installation#uninstall](https://horus.sh/docs/installation#uninstall)**.
279
277
 
280
- If something goes wrong after install, see **[docs/troubleshooting.md](./docs/troubleshooting.md)**.
278
+ If something goes wrong after install, run `horus doctor` and see **[horus.sh/docs/installation#troubleshooting](https://horus.sh/docs/installation#troubleshooting)**.
281
279
 
282
280
  ## Local development
283
281
 
@@ -287,7 +285,7 @@ docker compose up -d # Postgres 16 on localhost:5433
287
285
  pnpm build # builds apps/horus/dist/index.cjs
288
286
 
289
287
  # Per repository: start the source intelligence host and stitch queue boundaries
290
- horus index
288
+ horus init
291
289
 
292
290
  source ~/.horus.env
293
291
 
@@ -314,36 +312,47 @@ horus investigate --help
314
312
 
315
313
  | Command | What it does |
316
314
  | --- | --- |
317
- | `horus status [--project --env]` | Per-project/env connector-health matrix |
315
+ | `horus status [--env]` | Per-project/env connector-health matrix |
318
316
  | `horus connect <type>` | Add/update a runtime connector — `elasticsearch` / `mongodb` / `postgres` / `sentry` / `axiom` / `grafana` / `redis` (plus `ai` to configure an AI provider) |
319
- | `horus index --project <p> --env <e>` | Build the queue map (stitcher) for a project |
317
+ | `horus init [--env <e>]` | Set up the current repo: config, source-intelligence host, index, queue map |
320
318
  | `horus hosts [--reap]` | List source-intelligence hosts and live status; `--reap` stops orphaned hosts |
321
319
  | `horus stop [--all]` | Stop this repo's source-intelligence host (`--all` stops every host) |
322
- | `horus investigate --project <p> --env <e> "<hint>"` | Full deterministic investigation report |
323
- | `horus logs [service] --project <p> --env <e>` | Error-signature evidence (`--raw` for lines) |
324
- | `horus state --project <p> --env <e>` | MongoDB application-state evidence (read-only) |
325
- | `horus metrics [hint] --project <p> --env <e>` | Grafana metrics evidence |
326
- | `horus explain <symbol>` · `blast-radius` · `architecture` · `what-changed` | Source-aware code intelligence (requires source intelligence backend) |
320
+ | `horus investigate --env <e> "<hint>"` | Full deterministic investigation report (`--format json` for agents) |
321
+ | `horus packet <hint\|savedId> [--for claude] [--json]` | Compact, honesty-framed briefing for a coding-agent context window |
322
+ | `horus logs [service] --env <e>` | Error-signature evidence (`--raw` for lines) |
323
+ | `horus state --env <e>` | MongoDB application-state evidence (read-only) |
324
+ | `horus metrics [hint] --env <e>` | Grafana metrics evidence |
325
+ | `horus queues [name] [--live]` | Queue topology from source intelligence; `--live` reads real-time Redis/BullMQ state |
326
+ | `horus search <query>` · `explain <symbol>` · `blast-radius` · `architecture` · `what-changed` | Source-aware code intelligence — one canonical resolver, so a query resolves to the same symbol across commands (qualified `Class.method` supported) |
327
327
  | `horus memory <show\|add\|list\|link\|...>` | Inspect/author deterministic incident memory; `memory link` adds `supersedes` / `contradicts` / `recurs-with` edges |
328
328
  | `horus feedback <id> [--resolved] [--note] [--cause]` | Record outcome feedback on an investigation (improves Horus) |
329
329
  | `horus report [hint] [--title --body --labels]` | File a Horus bug or capability gap — opens a pre-filled GitHub issue (no auth, nothing sent automatically) |
330
330
 
331
331
  ## Local project workflow (git-style)
332
332
 
333
- A repo carries a `.horus/config.json` (discovered by walking up from the working directory, like `.git`), and a global registry (`~/.horus/registry.json`) lets `--name` resolve a project from anywhere.
333
+ A repo carries a `.horus/config.json` (discovered by walking up from the working directory, like `.git`) — the repo's config IS the project identity. Work from inside the repo, or pass `--config <path>` to target another repo explicitly.
334
334
 
335
335
  ```bash
336
- horus setup
337
-
338
336
  cd /repos/atlas-payments
339
- horus index
337
+ horus init
340
338
 
341
339
  horus investigate "checkout latency spike"
342
- horus investigate --name atlas-payments "checkout latency spike"
343
- horus projects
340
+ horus investigate --config /repos/atlas-payments/.horus/config.json "checkout latency spike" # from anywhere
341
+ horus projects # list registered repos (informational)
342
+ ```
343
+
344
+ `horus init` reuses an already-running source intelligence host when one is healthy. Runtime connectors are added to the env block of `.horus/config.json` afterwards.
345
+
346
+ ## For coding agents
347
+
348
+ Horus is built to be an agent's evidence layer. Install a skill that teaches your agent to reach for Horus before guessing:
349
+
350
+ ```bash
351
+ horus skill install claude # .claude/skills/horus/SKILL.md (also: codex · gemini · cursor · generic)
352
+ horus mcp # expose the local knowledge index to agents over MCP (stdio)
344
353
  ```
345
354
 
346
- `horus index` reuses an already-running source intelligence host when one is healthy. Runtime connectors are added to the env block of `.horus/config.json` afterwards.
355
+ Every investigation/analysis command takes `--json` (`--format json` for `investigate`/`replay`) — compact by default, `--full` for the raw structure — and each result carries a deterministic `nextSteps` array. `horus packet "<hint>" --json` returns a compact briefing sized for a context window.
347
356
 
348
357
  ## Layout
349
358
 
Binary file