@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 +42 -33
- package/dist/horus_source.whl +0 -0
- package/dist/index.cjs +5190 -3519
- package/package.json +1 -1
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
|
-
|
|
84
|
-
|
|
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** —
|
|
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
|
|
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
|
|
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.**
|
|
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/
|
|
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
|
|
244
|
+
horus init
|
|
247
245
|
```
|
|
248
246
|
|
|
249
|
-
The curl installer downloads the Horus CLI from GitHub Releases and
|
|
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
|
|
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/
|
|
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/
|
|
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
|
|
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
|
|
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 [--
|
|
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
|
|
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 --
|
|
323
|
-
| `horus
|
|
324
|
-
| `horus
|
|
325
|
-
| `horus
|
|
326
|
-
| `horus
|
|
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`)
|
|
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
|
|
337
|
+
horus init
|
|
340
338
|
|
|
341
339
|
horus investigate "checkout latency spike"
|
|
342
|
-
horus investigate --
|
|
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
|
-
`
|
|
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
|