loki-mode 10.6.0 → 10.6.7
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/.github/actions/issue-to-pr/action.yml +25 -11
- package/.github/workflows/loki-issue-to-pr.yml +21 -10
- package/README.md +113 -356
- package/SKILL.md +11 -8
- package/VERSION +1 -1
- package/autonomy/loki +77 -6
- package/autonomy/run.sh +26 -1
- package/autonomy/telemetry.sh +1 -1
- package/bin/loki +9 -1
- package/completions/_loki +1 -0
- package/completions/loki.bash +2 -2
- package/dashboard/__init__.py +1 -1
- package/docs/AUDIT-CHAIN-THREAT-MODEL.md +1 -1
- package/docs/DEMOS.md +11 -26
- package/docs/EVALUATING.md +2 -3
- package/docs/INSTALLATION.md +6 -5
- package/docs/TOOLS.md +1 -1
- package/docs/air-gapped.md +1 -1
- package/docs/dashboard-guide.md +2 -0
- package/docs/dev/project-structure.md +1 -1
- package/docs/dev/release-checklist.md +1 -2
- package/docs/enterprise/architecture.md +1 -1
- package/docs/siem-integration.md +2 -2
- package/docs/v10/CONTROL-PLANE.md +1 -1
- package/docs/v10/D61-SPEED.md +78 -0
- package/docs/v10/DECISIONS.md +12 -0
- package/docs/v10/DEPS.md +16 -0
- package/docs/v10/GUIDE.md +63 -1
- package/docs/v10/HANDOFF-NEXT-WEEK.md +34 -0
- package/loki-ts/dist/loki.js +571 -563
- package/mcp/__init__.py +1 -1
- package/package.json +7 -2
- package/packages/control-plane/dist/server.js +5919 -0
- package/packages/control-plane/drizzle/0000_new_maelstrom.sql +49 -0
- package/packages/control-plane/drizzle/meta/0000_snapshot.json +343 -0
- package/packages/control-plane/drizzle/meta/_journal.json +13 -0
- package/packages/control-plane/package.json +20 -0
- package/packages/control-plane/src/db/migrate.ts +20 -0
- package/packages/control-plane/src/db/schema.ts +54 -0
- package/packages/control-plane/src/server/app.ts +63 -0
- package/packages/control-plane/src/server/ingest.ts +52 -0
- package/packages/control-plane/src/server/runs.ts +116 -0
- package/packages/control-plane/src/server/serve.ts +15 -0
- package/packages/control-plane/src/shipper/backfill.ts +40 -0
- package/packages/control-plane/src/shipper/ship.ts +95 -0
- package/packages/control-plane/ui/dist/assets/index-B6EiyukW.js +114 -0
- package/packages/control-plane/ui/dist/assets/index-BH3LtKcG.css +1 -0
- package/packages/control-plane/ui/dist/index.html +13 -0
- package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
- package/web-app/dist/assets/{AdminPage-B8LTaWIa.js → AdminPage-DyjnUcaP.js} +1 -1
- package/web-app/dist/assets/{Avatar-BbxCTNns.js → Avatar-CY0sQNao.js} +1 -1
- package/web-app/dist/assets/{Badge-DIjrBQFC.js → Badge-BmwTRu72.js} +1 -1
- package/web-app/dist/assets/{Button-LgRYqCHv.js → Button-BRf5aTlb.js} +1 -1
- package/web-app/dist/assets/{CockpitPage-BgEdvdXX.js → CockpitPage-RR94HuxS.js} +1 -1
- package/web-app/dist/assets/{ComparePage-BPttVkSu.js → ComparePage-CFWAuPRO.js} +1 -1
- package/web-app/dist/assets/{ErrorBoundary-DCPrb7ec.js → ErrorBoundary-4cDADrG-.js} +1 -1
- package/web-app/dist/assets/{EvidenceReceiptPanel-BLqfCaoK.js → EvidenceReceiptPanel-ChPFx2eM.js} +1 -1
- package/web-app/dist/assets/{GitHubIssuesPanel-Ch61Yw6v.js → GitHubIssuesPanel-B0TAjyeW.js} +1 -1
- package/web-app/dist/assets/{GitHubPRsPanel-Cju9OEP1.js → GitHubPRsPanel-BbszEwW9.js} +1 -1
- package/web-app/dist/assets/{HomePage-BSt5tg3Z.js → HomePage-DrBgzs1d.js} +2 -2
- package/web-app/dist/assets/{LoginPage-Cj9xl0pH.js → LoginPage-Bu7b2DGz.js} +1 -1
- package/web-app/dist/assets/{MagicPage-CyfrX553.js → MagicPage-BFEYp631.js} +1 -1
- package/web-app/dist/assets/{MetricsPage-Ck6jFgAN.js → MetricsPage-eIe2naVR.js} +1 -1
- package/web-app/dist/assets/{NotFoundPage-CA_HlCgz.js → NotFoundPage-BVWYkNt9.js} +1 -1
- package/web-app/dist/assets/{ProjectPage-BkpztOmm.js → ProjectPage-zmxyu732.js} +3 -3
- package/web-app/dist/assets/{ProjectsPage-urTkLe8m.js → ProjectsPage-Dq5NdCak.js} +1 -1
- package/web-app/dist/assets/{SettingsPage-COvHhevh.js → SettingsPage-CCrJOMe0.js} +1 -1
- package/web-app/dist/assets/{ShowcasePage-BNIiqhqk.js → ShowcasePage-n-Ipzp01.js} +1 -1
- package/web-app/dist/assets/{SystemSettingsPage-CBPa5u-v.js → SystemSettingsPage-CP_rjYXK.js} +1 -1
- package/web-app/dist/assets/{TeamsPage-DuuHXfkP.js → TeamsPage-B_P9DepW.js} +1 -1
- package/web-app/dist/assets/{TemplatesPage-C8tRhU8-.js → TemplatesPage-h-3A6PQT.js} +1 -1
- package/web-app/dist/assets/{TerminalOutput-BOL99fiQ.js → TerminalOutput-pD0nJ1BU.js} +1 -1
- package/web-app/dist/assets/{activity-92O1sR3_.js → activity-ChFwzT-d.js} +1 -1
- package/web-app/dist/assets/{bell-CeWSKe4w.js → bell-BX-eK8Gu.js} +1 -1
- package/web-app/dist/assets/{bot-n8nzxbS2.js → bot-fj5PkPtR.js} +1 -1
- package/web-app/dist/assets/{check-C-8ho0t2.js → check-BGAbHlvD.js} +1 -1
- package/web-app/dist/assets/{chevron-left-D4UQrt8-.js → chevron-left-BzFUxHgb.js} +1 -1
- package/web-app/dist/assets/{circle-alert-BnxgnWHv.js → circle-alert-BQrg5DWl.js} +1 -1
- package/web-app/dist/assets/{clock-DgbJFbcN.js → clock-CTu9lkVo.js} +1 -1
- package/web-app/dist/assets/{cloud-BSEYN8y8.js → cloud-DrIENRiE.js} +1 -1
- package/web-app/dist/assets/{code-xml-CFYOlC1u.js → code-xml-PaoVpfur.js} +1 -1
- package/web-app/dist/assets/{database-DNJ4cz62.js → database-DMmkAotn.js} +1 -1
- package/web-app/dist/assets/{dollar-sign-DZ1zEfep.js → dollar-sign-B2LQdBoX.js} +1 -1
- package/web-app/dist/assets/{file-code-corner-D9vIN2Ru.js → file-code-corner-Dfv1XXeR.js} +1 -1
- package/web-app/dist/assets/{file-plus-B4TugJYw.js → file-plus-D2Wzf2wd.js} +1 -1
- package/web-app/dist/assets/{globe-BPNU50l7.js → globe-DxotVWt8.js} +1 -1
- package/web-app/dist/assets/{hammer-CwVF_APh.js → hammer-Brfy5ZrJ.js} +1 -1
- package/web-app/dist/assets/{index-DnAhEaY4.js → index-BfhHMwi8.js} +3 -3
- package/web-app/dist/assets/{layers-DNBXP7Gs.js → layers-DfxSWDvp.js} +1 -1
- package/web-app/dist/assets/{loader-circle-bh-SWjhS.js → loader-circle-CxIrzNwx.js} +1 -1
- package/web-app/dist/assets/{lock-CpbXWrBs.js → lock-m6nzhtpU.js} +1 -1
- package/web-app/dist/assets/{package-3NG8Vkod.js → package-ri9oE9Jc.js} +1 -1
- package/web-app/dist/assets/{plus-C1DPukhG.js → plus-DWeTAMVV.js} +1 -1
- package/web-app/dist/assets/{refresh-cw-Cgl65iQ2.js → refresh-cw-BGMSpaMh.js} +1 -1
- package/web-app/dist/assets/{rotate-ccw-BS5sMMYV.js → rotate-ccw-DD1xBD_b.js} +1 -1
- package/web-app/dist/assets/{scroll-text-BpvzZAZR.js → scroll-text-BCCR_AN9.js} +1 -1
- package/web-app/dist/assets/{server-DSLFedy_.js → server-CmMWPIjS.js} +1 -1
- package/web-app/dist/assets/{shield-alert-BlG8AkvF.js → shield-alert-BZZmBVEJ.js} +1 -1
- package/web-app/dist/assets/{thumbs-up-BJcYgjRU.js → thumbs-up-OaxbNRXu.js} +1 -1
- package/web-app/dist/assets/{trash-2-CScLwgFk.js → trash-2-DmcSzTfr.js} +1 -1
- package/web-app/dist/assets/{trending-down-BPRGGG_g.js → trending-down-BmfXLykz.js} +1 -1
- package/web-app/dist/assets/{trending-up-BpLBFaZo.js → trending-up-Djec3jIq.js} +1 -1
- package/web-app/dist/assets/{upload-LgGE0PEa.js → upload-BN8dXIlF.js} +1 -1
- package/web-app/dist/assets/{usePolling-0W4sMm7u.js → usePolling-Cu4yi04I.js} +1 -1
- package/web-app/dist/assets/{user-D4KBUK1Z.js → user-IBI-k10o.js} +1 -1
- package/web-app/dist/index.html +1 -1
- package/docs/walkthrough/README.md +0 -44
package/SKILL.md
CHANGED
|
@@ -3,7 +3,9 @@ name: loki-mode
|
|
|
3
3
|
description: An autonomous software factory that knows what it is supposed to deliver, and proves it did. Use when the user says Loki Mode or asks to build, fix or verify software autonomously.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Loki Mode v10.6.
|
|
6
|
+
# Loki Mode v10.6.7
|
|
7
|
+
|
|
8
|
+
**Current entry points (Loki 10 engine):** `loki "<task>"`, `loki owner/repo#N` and `loki quick "<task>"` run the Loki 10 engine and end with a signed receipt (`loki verify`). `loki backlog owner/repo --all` runs many issues in parallel. Guide: `docs/v10/GUIDE.md`. The skill instructions below, and `loki start`, describe the legacy engine, which still ships and is being removed (`loki start owner/repo#N` still routes to it; prefer `loki owner/repo#N`).
|
|
7
9
|
|
|
8
10
|
**You are an autonomous agent. You make decisions. You do not ask questions. You do not stop.**
|
|
9
11
|
|
|
@@ -11,7 +13,7 @@ description: An autonomous software factory that knows what it is supposed to de
|
|
|
11
13
|
|
|
12
14
|
**Evidence Receipt (verify it yourself).** Every run writes a receipt to `.loki/proofs/<run_id>/` (opt out with `LOKI_PROOF=0`) that separates deterministic FACTS (git diff with base/head SHAs and a `diff_sha256`, the test command + exit code, the build command + exit code, each gate verdict) from AI ASSESSMENTS (the council verdict, labeled judgment not proof). The headline is computed only from the facts: VERIFIED (tests ran a real command and exited 0, diff non-empty, nothing skipped), VERIFIED WITH GAPS (each gap listed by name), or NOT VERIFIED (a check ran and failed). Inspect and re-check with `loki proof list|show <id>|verify <id>` (aliased `loki receipt`); `loki proof verify` re-hashes the receipt (tamper) and re-derives the diff from the recorded base SHA against the live repo (drift), exiting 0 clean / 1 tamper-or-drift / 2 could not check (64 usage, 66 unknown id; see `docs/exit-codes.md`). This is honesty-of-done, not a claim that the code is bug-free.
|
|
13
15
|
|
|
14
|
-
**Provider-agnostic (stable since v5.0.0):** runs on Claude/Codex/Cline/Aider with abstract model tiers and degraded mode for non-Claude providers; no vendor lock-in. Gemini deprecated v7.5.18. See `skills/providers.md`. **
|
|
16
|
+
**Provider-agnostic (stable since v5.0.0):** runs on Claude/Codex/Cline/Aider with abstract model tiers and degraded mode for non-Claude providers; no vendor lock-in. Gemini deprecated v7.5.18. See `skills/providers.md`. **Legacy track (v8.0.0):** the Anthropic Agent SDK route (see below), spec-mode expansion for OpenAPI/GraphQL/Postman contracts, the runtime-boot and secret-leak evidence axes, and `loki steer` / `loki why` for mid-run control. Earlier tracks: LSP grounding as a first-class agent tool (v7.7.x) and Phase 1 RARV-C closure (real provider judges, gate-failure flock, synthetic PRD e2e, status `--json`).
|
|
15
17
|
|
|
16
18
|
**Runtime migration:** Bash-to-Bun migration. Read-only commands (`version`, `status`, `stats`, `doctor`, `provider show/list`, `memory list/index`) flow through Bun runtime via `bin/loki` since v7.3.0. Every other command remains on the Bash runtime (`autonomy/loki`). Rollback: `LOKI_LEGACY_BASH=1`. See `UPGRADING.md` and `docs/architecture/ADR-001-runtime-migration.md`.
|
|
17
19
|
|
|
@@ -105,13 +107,13 @@ These rules guide autonomous operation. Test results and code quality always tak
|
|
|
105
107
|
| Integration tests, E2E, deployment | **development** | opus | sonnet | effort=high |
|
|
106
108
|
| Unit tests, linting, docs, simple fixes | **fast** | sonnet | haiku | effort=low |
|
|
107
109
|
|
|
108
|
-
**Parallelization rule (Claude only):** Launch
|
|
110
|
+
**Parallelization rule (Claude only):** Launch independent tasks in parallel.
|
|
109
111
|
|
|
110
112
|
**Degraded mode (Codex/Cline/Aider):** No parallel agents or Task tool. Codex has MCP support. Runs RARV cycle sequentially. See `skills/model-selection.md`.
|
|
111
113
|
|
|
112
114
|
**Git worktree parallelism:** For true parallel feature development, use `--parallel` flag with run.sh. See `skills/parallel-workflows.md`.
|
|
113
115
|
|
|
114
|
-
**Scale patterns (
|
|
116
|
+
**Scale patterns (Claude only):** Use judge agents, recursive sub-planners, optimistic concurrency. See `references/cursor-learnings.md`.
|
|
115
117
|
|
|
116
118
|
---
|
|
117
119
|
|
|
@@ -195,7 +197,7 @@ This protocol governs **skill module** loading -- task-scoped instruction files
|
|
|
195
197
|
|
|
196
198
|
## Invocation
|
|
197
199
|
|
|
198
|
-
**
|
|
200
|
+
**Legacy entry point (v6.84.0, being removed; for Loki 10 use `loki "<task>"` or `loki owner/repo#N`):** `loki start [SPEC|ISSUE-REF]` auto-detects whether the input is a PRD file, an issue URL, an issue number, or another spec format (e.g. OpenAPI). No need to pick between `loki start` and `loki run` -- the single command handles all cases.
|
|
199
201
|
|
|
200
202
|
```bash
|
|
201
203
|
# Standard mode (Claude - full features)
|
|
@@ -459,15 +461,16 @@ See `CHANGELOG.md` entries [7.5.7], [7.5.8], [7.5.13] for the per-fix list and r
|
|
|
459
461
|
| Bun runtime (Phase 2+) | TBD | Migrate write-path commands; tracked on `feat/bun-migration` |
|
|
460
462
|
| Managed Agents multiagent path | TBD | `LOKI_EXPERIMENTAL_MANAGED_*` flags -- RESEARCH PREVIEW, not on live API |
|
|
461
463
|
| Benchmarks | TBD | Runner scripts and datasets exist in `benchmarks/`; no published results |
|
|
462
|
-
| `loki run` removal |
|
|
464
|
+
| `loki run` removal | with legacy removal | Currently a deprecated alias for `loki start` |
|
|
463
465
|
|
|
464
466
|
## Deprecated
|
|
465
467
|
|
|
466
468
|
| Item | Deprecated In | Notes |
|
|
467
469
|
|------|---------------|-------|
|
|
468
|
-
| `loki run <issue>` | v6.84.0 | Alias for `loki start`.
|
|
470
|
+
| `loki run <issue>` | v6.84.0 | Alias for `loki start`. Removal is part of the planned legacy removal. |
|
|
471
|
+
| `loki start`, RARV skill loop | v10.6.6 | Legacy engine, planned for removal; use `loki "<task>"` / `loki owner/repo#N`. |
|
|
469
472
|
| VSCode extension (`vscode-extension/`) | v7.2.0 | No longer actively maintained; dashboard web UI is the supported front-end. |
|
|
470
473
|
|
|
471
474
|
---
|
|
472
475
|
|
|
473
|
-
**v10.6.
|
|
476
|
+
**v10.6.7 | [Autonomi](https://www.autonomi.dev/) flagship product | core skill**
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
10.6.
|
|
1
|
+
10.6.7
|
package/autonomy/loki
CHANGED
|
@@ -1782,6 +1782,7 @@ show_help() {
|
|
|
1782
1782
|
echo " syslog telemetry template test tour trigger trust trust-metrics"
|
|
1783
1783
|
echo " ultracode update verify version voice watch watchdog web welcome why"
|
|
1784
1784
|
echo " wiki worktree (wt)"
|
|
1785
|
+
echo " control (preview, needs LOKI_CONTROL=1)"
|
|
1785
1786
|
echo ""
|
|
1786
1787
|
echo "Any command: loki <command> --help"
|
|
1787
1788
|
echo ""
|
|
@@ -1871,12 +1872,39 @@ for p in range(int(sys.argv[1]), int(sys.argv[1]) + 100):
|
|
|
1871
1872
|
PY
|
|
1872
1873
|
}
|
|
1873
1874
|
|
|
1875
|
+
# Fail-closed reuse check for a dashboard found via the ~/.loki/dashboard
|
|
1876
|
+
# registry or a busy port: reusable only if /health reports THIS package's
|
|
1877
|
+
# version AND realpath, and GET / is 200 text/html. Any missing field, curl
|
|
1878
|
+
# error or mismatch means "not ours". Mirrors _loki_dashboard_reusable in run.sh.
|
|
1879
|
+
_loki_dashboard_port_is_ours() {
|
|
1880
|
+
local port="$1" want want_pkg health probe
|
|
1881
|
+
case "$port" in ''|*[!0-9]*) return 1 ;; esac
|
|
1882
|
+
want="$(tr -d '[:space:]' <"$SKILL_DIR/VERSION" 2>/dev/null)" || return 1
|
|
1883
|
+
[ -n "$want" ] || return 1
|
|
1884
|
+
want_pkg="$(cd "$SKILL_DIR" 2>/dev/null && pwd -P)" || return 1
|
|
1885
|
+
health="$(curl -s --max-time 2 "http://127.0.0.1:${port}/health" 2>/dev/null)" || return 1
|
|
1886
|
+
case "$health" in
|
|
1887
|
+
*"\"version\":\"${want}\""* | *"\"version\": \"${want}\""*) ;;
|
|
1888
|
+
*) return 1 ;;
|
|
1889
|
+
esac
|
|
1890
|
+
case "$health" in
|
|
1891
|
+
*"\"package\":\"${want_pkg}\""* | *"\"package\": \"${want_pkg}\""*) ;;
|
|
1892
|
+
*) return 1 ;;
|
|
1893
|
+
esac
|
|
1894
|
+
probe="$(curl -s -o /dev/null -w '%{http_code} %{content_type}' --max-time 2 "http://127.0.0.1:${port}/" 2>/dev/null)" || return 1
|
|
1895
|
+
case "$probe" in "200 text/html"*) return 0 ;; esac
|
|
1896
|
+
return 1
|
|
1897
|
+
}
|
|
1898
|
+
|
|
1874
1899
|
cmd_ui() {
|
|
1875
1900
|
local port="" pid=""
|
|
1876
1901
|
if [ -f "$DASHBOARD_PID_FILE" ]; then
|
|
1877
1902
|
pid=$(cat "$DASHBOARD_PID_FILE" 2>/dev/null)
|
|
1878
1903
|
if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then
|
|
1879
1904
|
port=$(cat "${DASHBOARD_PID_DIR}/port" 2>/dev/null)
|
|
1905
|
+
# A registry entry whose live server is not this package's dashboard
|
|
1906
|
+
# (stale, foreign worktree, other version) is never reused.
|
|
1907
|
+
_loki_dashboard_port_is_ours "$port" || port=""
|
|
1880
1908
|
fi
|
|
1881
1909
|
fi
|
|
1882
1910
|
if [ -z "$port" ]; then
|
|
@@ -3758,9 +3786,18 @@ cmd_start() {
|
|
|
3758
3786
|
# + cockpit, honoring the card's "open dashboard" promise. The
|
|
3759
3787
|
# cockpit hint is printed by _loki_start_handoff for the Both path.
|
|
3760
3788
|
args+=("--bg")
|
|
3761
|
-
|
|
3762
|
-
#
|
|
3763
|
-
|
|
3789
|
+
# Open the URL the runner PUBLISHES for the port it actually bound
|
|
3790
|
+
# or reused (it walks past refused ports); never guess the default
|
|
3791
|
+
# 57374, which may be a foreign or stale dashboard. stdout must
|
|
3792
|
+
# stay unredirected: loki_open_url checks the TTY.
|
|
3793
|
+
local _dfile="${PWD}/.loki/dashboard/url"
|
|
3794
|
+
rm -f "$_dfile" 2>/dev/null
|
|
3795
|
+
(
|
|
3796
|
+
for _ in $(seq 1 120); do
|
|
3797
|
+
if [ -s "$_dfile" ]; then loki_open_url "$(head -1 "$_dfile")" 2>/dev/null; exit 0; fi
|
|
3798
|
+
sleep 0.5
|
|
3799
|
+
done
|
|
3800
|
+
) &
|
|
3764
3801
|
;;
|
|
3765
3802
|
launch-bg-watch)
|
|
3766
3803
|
# Watch (cockpit only) detaches without opening the browser.
|
|
@@ -7481,13 +7518,15 @@ cmd_dashboard_start() {
|
|
|
7481
7518
|
if [ -f "$DASHBOARD_PID_FILE" ]; then
|
|
7482
7519
|
local existing_pid
|
|
7483
7520
|
existing_pid=$(cat "$DASHBOARD_PID_FILE" 2>/dev/null)
|
|
7484
|
-
if [ -n "$existing_pid" ] && kill -0 "$existing_pid" 2>/dev/null
|
|
7521
|
+
if [ -n "$existing_pid" ] && kill -0 "$existing_pid" 2>/dev/null \
|
|
7522
|
+
&& _loki_dashboard_port_is_ours "$(cat "${DASHBOARD_PID_DIR}/port" 2>/dev/null)"; then
|
|
7485
7523
|
echo -e "${YELLOW}Dashboard server already running (PID: $existing_pid)${NC}"
|
|
7486
7524
|
echo ""
|
|
7487
7525
|
cmd_dashboard_status
|
|
7488
7526
|
exit 0
|
|
7489
7527
|
fi
|
|
7490
|
-
# Stale PID file,
|
|
7528
|
+
# Stale PID file, or a live server that is not this package's dashboard
|
|
7529
|
+
# (never killed here, just not reused): remove the registry entry.
|
|
7491
7530
|
rm -f "$DASHBOARD_PID_FILE"
|
|
7492
7531
|
fi
|
|
7493
7532
|
|
|
@@ -21581,7 +21620,7 @@ status stop pause resume monitor watch watchdog dashboard web open preview share
|
|
|
21581
21620
|
memory context ctx checkpoint state report kpis cost metrics stats logs otel \
|
|
21582
21621
|
syslog telemetry crash config provider doctor setup-skill onboard quickstart \
|
|
21583
21622
|
welcome update self-update rollback failover cluster enterprise remote deploy docker \
|
|
21584
|
-
sandbox api mcp magic compound assets export wiki docs explain why audit compliance \
|
|
21623
|
+
sandbox api mcp magic compound assets export wiki control docs explain why audit compliance \
|
|
21585
21624
|
secrets analyze optimize bench ci reset cleanup notify trigger voice sentrux \
|
|
21586
21625
|
worktree wt projects cp rc trust-metrics serve agent code self_update test help version"
|
|
21587
21626
|
local best
|
|
@@ -22072,6 +22111,9 @@ main() {
|
|
|
22072
22111
|
wiki)
|
|
22073
22112
|
cmd_wiki "$@"
|
|
22074
22113
|
;;
|
|
22114
|
+
control)
|
|
22115
|
+
cmd_control "$@"
|
|
22116
|
+
;;
|
|
22075
22117
|
magic)
|
|
22076
22118
|
cmd_magic "$@"
|
|
22077
22119
|
;;
|
|
@@ -33803,6 +33845,35 @@ cmd_outcomes() {
|
|
|
33803
33845
|
LOKI_DIR="${LOKI_DIR:-.loki}" python3 "$lib" "$@"
|
|
33804
33846
|
}
|
|
33805
33847
|
|
|
33848
|
+
# loki control -- D56 control plane (preview). The live route is the Bun CLI
|
|
33849
|
+
# (loki-ts/src/commands/control.ts); this is the LOKI_LEGACY_BASH / no-shim
|
|
33850
|
+
# fallback. It keeps the gate and help in bash and hands the work to Bun.
|
|
33851
|
+
cmd_control() {
|
|
33852
|
+
local sub="${1:-}"
|
|
33853
|
+
case "$sub" in
|
|
33854
|
+
""|-h|--help|help)
|
|
33855
|
+
echo "Usage: loki control <command> [options] (preview, requires LOKI_CONTROL=1)"
|
|
33856
|
+
echo ""
|
|
33857
|
+
echo "Commands:"
|
|
33858
|
+
echo " serve [--port N] [--db PATH] Run the control plane + UI on 127.0.0.1"
|
|
33859
|
+
echo " backfill [DIR] Ship DIR/.loki/runs to the control plane"
|
|
33860
|
+
echo " status Show whether the control plane is reachable"
|
|
33861
|
+
return 0
|
|
33862
|
+
;;
|
|
33863
|
+
esac
|
|
33864
|
+
if [ "${LOKI_CONTROL:-}" != "1" ]; then
|
|
33865
|
+
echo "loki control is in preview. Enable it with: export LOKI_CONTROL=1"
|
|
33866
|
+
return 0
|
|
33867
|
+
fi
|
|
33868
|
+
local cli="$SKILL_DIR/loki-ts/dist/loki.js"
|
|
33869
|
+
if ! command -v bun >/dev/null 2>&1; then
|
|
33870
|
+
echo "loki control requires bun (https://bun.sh)" >&2
|
|
33871
|
+
return 1
|
|
33872
|
+
fi
|
|
33873
|
+
[ -f "$cli" ] || cli="$SKILL_DIR/loki-ts/src/cli.ts"
|
|
33874
|
+
exec bun "$cli" control "$@"
|
|
33875
|
+
}
|
|
33876
|
+
|
|
33806
33877
|
cmd_wiki() {
|
|
33807
33878
|
local subcmd="${1:-}"
|
|
33808
33879
|
shift 2>/dev/null || true
|
package/autonomy/run.sh
CHANGED
|
@@ -19183,6 +19183,14 @@ _loki_dashboard_reusable() {
|
|
|
19183
19183
|
return 1
|
|
19184
19184
|
}
|
|
19185
19185
|
|
|
19186
|
+
# Publish the URL of the port actually bound or reused, so the launcher (bg
|
|
19187
|
+
# banner, browser opener) never guesses the default 57374 after start_dashboard
|
|
19188
|
+
# walked past a refused port.
|
|
19189
|
+
_loki_publish_dashboard_url() {
|
|
19190
|
+
mkdir -p .loki/dashboard 2>/dev/null || return 0
|
|
19191
|
+
printf '%s\n' "$1" > .loki/dashboard/url.tmp 2>/dev/null && mv -f .loki/dashboard/url.tmp .loki/dashboard/url 2>/dev/null || true
|
|
19192
|
+
}
|
|
19193
|
+
|
|
19186
19194
|
start_dashboard() {
|
|
19187
19195
|
loki_background_services_enabled || return 0
|
|
19188
19196
|
log_header "Starting Loki Dashboard"
|
|
@@ -19262,6 +19270,7 @@ start_dashboard() {
|
|
|
19262
19270
|
if [ "${DASHBOARD_REUSED:-0}" = "1" ]; then
|
|
19263
19271
|
export LOKI_DASHBOARD_PORT="$DASHBOARD_PORT"
|
|
19264
19272
|
log_info "Dashboard already live on port $DASHBOARD_PORT; reusing it."
|
|
19273
|
+
_loki_publish_dashboard_url "http://127.0.0.1:${DASHBOARD_PORT}/"
|
|
19265
19274
|
return 0
|
|
19266
19275
|
fi
|
|
19267
19276
|
|
|
@@ -19419,6 +19428,7 @@ start_dashboard() {
|
|
|
19419
19428
|
DASHBOARD_LAST_ALIVE=$(date +%s)
|
|
19420
19429
|
log_info "Dashboard started (PID: $DASHBOARD_PID)"
|
|
19421
19430
|
log_info "Dashboard: ${CYAN}${url_scheme}://127.0.0.1:$DASHBOARD_PORT/${NC}"
|
|
19431
|
+
_loki_publish_dashboard_url "${url_scheme}://127.0.0.1:${DASHBOARD_PORT}/"
|
|
19422
19432
|
|
|
19423
19433
|
# Auto-open the dashboard in the browser, but ONLY for an interactive
|
|
19424
19434
|
# foreground session. loki_open_url (lib/browser-open.sh) refuses on
|
|
@@ -28816,6 +28826,8 @@ main() {
|
|
|
28816
28826
|
fi
|
|
28817
28827
|
# Initialize .loki directory first
|
|
28818
28828
|
mkdir -p .loki/logs
|
|
28829
|
+
# A url left by an earlier run must never be mistaken for this child's.
|
|
28830
|
+
rm -f .loki/dashboard/url
|
|
28819
28831
|
|
|
28820
28832
|
local log_file=".loki/logs/background-$(date +%Y%m%d-%H%M%S).log"
|
|
28821
28833
|
local pid_file
|
|
@@ -28869,6 +28881,19 @@ main() {
|
|
|
28869
28881
|
echo "$bg_pid" > "$pid_file"
|
|
28870
28882
|
register_pid "$bg_pid" "background-session" "log=$log_file"
|
|
28871
28883
|
|
|
28884
|
+
# The child picks the dashboard port (it walks past refused ports), so
|
|
28885
|
+
# print the URL it publishes, never the requested default.
|
|
28886
|
+
local _bg_dash_line="disabled (LOKI_DASHBOARD=false)"
|
|
28887
|
+
if [ "$ENABLE_DASHBOARD" = "true" ] && loki_background_services_enabled; then
|
|
28888
|
+
_bg_dash_line="starting (run: loki dashboard url, or see $log_file)"
|
|
28889
|
+
local _bg_i
|
|
28890
|
+
for _bg_i in $(seq 1 60); do
|
|
28891
|
+
if [ -s .loki/dashboard/url ]; then _bg_dash_line="$(head -1 .loki/dashboard/url)"; break; fi
|
|
28892
|
+
kill -0 "$bg_pid" 2>/dev/null || break
|
|
28893
|
+
sleep 0.5
|
|
28894
|
+
done
|
|
28895
|
+
fi
|
|
28896
|
+
|
|
28872
28897
|
echo ""
|
|
28873
28898
|
echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
28874
28899
|
echo -e "${GREEN} Loki Mode Running in Background${NC}"
|
|
@@ -28878,7 +28903,7 @@ main() {
|
|
|
28878
28903
|
echo -e " ${CYAN}Path:${NC} $project_path"
|
|
28879
28904
|
echo -e " ${CYAN}PID:${NC} $bg_pid"
|
|
28880
28905
|
echo -e " ${CYAN}Log:${NC} $log_file"
|
|
28881
|
-
echo -e " ${CYAN}Dashboard:${NC}
|
|
28906
|
+
echo -e " ${CYAN}Dashboard:${NC} ${_bg_dash_line}"
|
|
28882
28907
|
echo ""
|
|
28883
28908
|
echo -e "${YELLOW}Control Commands:${NC}"
|
|
28884
28909
|
echo -e " ${DIM}Pause:${NC} touch .loki/PAUSE"
|
package/autonomy/telemetry.sh
CHANGED
|
@@ -168,7 +168,7 @@ _loki_known_command() {
|
|
|
168
168
|
case "${1:-}" in
|
|
169
169
|
--help|--version|-h|-v|agent|analyze|api|assets\
|
|
170
170
|
|audit|bench|checkpoint|ci|cleanup|cluster|cockpit|code\
|
|
171
|
-
|completions|compliance|compound|config|context|cost|council|cp\
|
|
171
|
+
|completions|compliance|compound|config|context|control|cost|council|cp\
|
|
172
172
|
|crash|ctx|dashboard|demo|deploy|docker|docs|doctor\
|
|
173
173
|
|dogfood|enterprise|explain|export|failover|github|grill|handoff\
|
|
174
174
|
|heal|help|import|init|internal|issue|kpis|logs\
|
package/bin/loki
CHANGED
|
@@ -350,6 +350,14 @@ case "${LOKI_ENGINE:-$_loki_engine_default}" in
|
|
|
350
350
|
*) _e10=1; _e10_args=(--no-pr "${@:2}") ;;
|
|
351
351
|
esac
|
|
352
352
|
;;
|
|
353
|
+
# D58: `loki start <issue ref|issue URL|"multi-word task">` takes the same v10 path as
|
|
354
|
+
# `loki <ref>`; any other start call (PRD file, flags first, one word) stays legacy.
|
|
355
|
+
start)
|
|
356
|
+
case "${2:-}" in
|
|
357
|
+
*/*\#[0-9]*|http*://*/issues/*|http*://*/browse/*|*" "*) _e10=1; _e10_args=("${@:2}") ;;
|
|
358
|
+
*) _e10=0 ;;
|
|
359
|
+
esac
|
|
360
|
+
;;
|
|
353
361
|
# http*://*/issues/* also covers GitLab's /-/issues/ URLs.
|
|
354
362
|
*/*\#[0-9]*|http*://*/issues/*|http*://*/browse/*) _e10=1 ;;
|
|
355
363
|
*" "*) _e10=1 ;;
|
|
@@ -559,7 +567,7 @@ fi
|
|
|
559
567
|
# Two-token routes (provider show/list, memory list/index) match on the first
|
|
560
568
|
# token only; the Bun dispatcher handles subcommand routing internally.
|
|
561
569
|
case "${1:-}" in
|
|
562
|
-
version|--version|-v|status|stats|doctor|provider|memory|rollback|internal|kpis|trust|proof|receipt|wiki|crash)
|
|
570
|
+
version|--version|-v|status|stats|doctor|provider|memory|rollback|internal|kpis|trust|proof|receipt|wiki|crash|control)
|
|
563
571
|
# v7.5.2: rollback added (wires loki-ts/src/commands/rollback.ts).
|
|
564
572
|
# v7.5.3: internal added for autonomy/run.sh phase1-hooks calls.
|
|
565
573
|
# v7.5.28: kpis added (Phase K MVP: read-only KPI snapshot).
|
package/completions/_loki
CHANGED
|
@@ -206,6 +206,7 @@ function _loki_commands {
|
|
|
206
206
|
'crash:Crash report management'
|
|
207
207
|
'otel:OpenTelemetry management'
|
|
208
208
|
'wiki:Wiki commands'
|
|
209
|
+
'control:Control plane (preview, LOKI_CONTROL=1)'
|
|
209
210
|
'backlog:Run every matching open issue, N in parallel'
|
|
210
211
|
'explain:Explain Loki concepts'
|
|
211
212
|
'optimize:Optimization commands'
|
package/completions/loki.bash
CHANGED
|
@@ -5,8 +5,8 @@ _loki_completion() {
|
|
|
5
5
|
_init_completion || return
|
|
6
6
|
|
|
7
7
|
# Main subcommands (must match autonomy/loki main case statement)
|
|
8
|
-
local main_commands="start backlog quick monitor demo tour welcome init stop pause resume steer status next ship dashboard web serve api sandbox notify import github issue config provider reset memory compound checkpoint council dogfood projects enterprise secrets cockpit secure own handoff doctor watchdog audit metrics syslog onboard share proof receipt outcomes explain plan report cost estimate kpis stats test ci watch telemetry agent context ctx code run export review optimize heal modernize migrate cluster worktree wt trigger failover remote deploy docker mcp magic assets analyze compliance crash open otel preview quickstart rc rollback self-update sentrux setup-skill spec state template trust trust-metrics ultracode update verify voice why wiki bench cleanup logs grill docs cp version completions help keys"
|
|
9
|
-
local main_commands="start backlog quick monitor demo tour welcome init stop pause resume steer status next ship dashboard web serve api sandbox notify import github issue intent config provider reset memory compound checkpoint council dogfood projects enterprise secrets cockpit secure own handoff doctor watchdog audit metrics syslog onboard share proof receipt explain plan report cost estimate kpis stats test ci watch telemetry agent context ctx code run export review optimize heal modernize migrate cluster worktree wt trigger failover remote deploy docker mcp magic assets analyze compliance crash open otel preview quickstart rc rollback self-update sentrux setup-skill spec state template trust trust-metrics ultracode update verify voice why wiki bench cleanup logs grill docs cp version completions help keys"
|
|
8
|
+
local main_commands="start backlog quick monitor demo tour welcome init stop pause resume steer status next ship dashboard web serve api sandbox notify import github issue config provider reset memory compound checkpoint council dogfood projects enterprise secrets cockpit secure own handoff doctor watchdog audit metrics syslog onboard share proof receipt outcomes explain plan report cost estimate kpis stats test ci watch telemetry agent context ctx code run export review optimize heal modernize migrate cluster worktree wt trigger failover remote deploy docker mcp magic assets analyze compliance crash control open otel preview quickstart rc rollback self-update sentrux setup-skill spec state template trust trust-metrics ultracode update verify voice why wiki bench cleanup logs grill docs cp version completions help keys"
|
|
9
|
+
local main_commands="start backlog quick monitor demo tour welcome init stop pause resume steer status next ship dashboard web serve api sandbox notify import github issue intent config provider reset memory compound checkpoint council dogfood projects enterprise secrets cockpit secure own handoff doctor watchdog audit metrics syslog onboard share proof receipt explain plan report cost estimate kpis stats test ci watch telemetry agent context ctx code run export review optimize heal modernize migrate cluster worktree wt trigger failover remote deploy docker mcp magic assets analyze compliance crash control open otel preview quickstart rc rollback self-update sentrux setup-skill spec state template trust trust-metrics ultracode update verify voice why wiki bench cleanup logs grill docs cp version completions help keys"
|
|
10
10
|
|
|
11
11
|
# 1. If we are on the first argument (subcommand)
|
|
12
12
|
if [[ $cword -eq 1 ]]; then
|
package/dashboard/__init__.py
CHANGED
|
@@ -32,7 +32,7 @@ The history was replaced wholesale and `verifyChain()` reported `valid: true`.
|
|
|
32
32
|
`dashboard/audit.py` is a separate implementation with the same property:
|
|
33
33
|
genesis is the constant `"0" * 64` (`:58`, `:115`), and `_compute_chain_hash`
|
|
34
34
|
(`:194-200`) is an unkeyed `sha256(prev_hash + entry_json)`. Its own docstring
|
|
35
|
-
at `:197`
|
|
35
|
+
at `:197` overstates what the chain proves. Forged with the writer's exact recipe
|
|
36
36
|
(`json.dumps(entry, sort_keys=True, default=str)`, field `_integrity_hash`,
|
|
37
37
|
`:369-371`), `verify_log_integrity` reports:
|
|
38
38
|
|
package/docs/DEMOS.md
CHANGED
|
@@ -1,24 +1,12 @@
|
|
|
1
1
|
# Loki Mode -- Interactive Content Index
|
|
2
2
|
|
|
3
|
-
Complete listing of all interactive HTML experiences in the Loki Mode repository.
|
|
3
|
+
Complete listing of all interactive HTML experiences in the Loki Mode repository. 8 files total across three categories.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Overview (1 HTML file)
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|------|-------|-------------|
|
|
11
|
-
| `index.html` | Build Your First App | Step-by-step tutorial from PRD to deployment |
|
|
12
|
-
| `architecture.html` | System Architecture | Interactive SVG diagram of the full system |
|
|
13
|
-
| `comparison.html` | Feature Comparison | Loki Mode vs competitor feature matrix |
|
|
14
|
-
| `gallery.html` | Project Gallery | Example projects across categories |
|
|
15
|
-
| `video-placeholder.html` | Build Process Animation | CSS-animated build walkthrough |
|
|
16
|
-
| `hub.html` | Walkthrough Hub | Links to all walkthroughs with categories and estimated durations |
|
|
17
|
-
|
|
18
|
-
An earlier version of this page also listed `build-demo.html`, `ide-demo.html`,
|
|
19
|
-
`enterprise-demo.html`, `provider-race-demo.html`, `memory-demo.html`, and
|
|
20
|
-
`dashboard-demo.html`. None of those files exist in the repository; they have
|
|
21
|
-
been removed from the list rather than left as broken references.
|
|
7
|
+
`docs/overview.html`: Loki Mode 10 explained in five views (Users, Engineers,
|
|
8
|
+
Architects, Executives, Pitch), with Mermaid flow diagrams. It replaces the six
|
|
9
|
+
legacy-era pages that used to live in `docs/walkthrough/`.
|
|
22
10
|
|
|
23
11
|
## Demo Apps (6 HTML files)
|
|
24
12
|
|
|
@@ -43,28 +31,25 @@ Located in `examples/`. Each was generated by Loki Mode from a single prompt.
|
|
|
43
31
|
|
|
44
32
|
| Category | Count |
|
|
45
33
|
|----------|-------|
|
|
46
|
-
|
|
|
34
|
+
| Overview | 1 |
|
|
47
35
|
| Demo Apps | 6 |
|
|
48
36
|
| Product Website | 1 |
|
|
49
|
-
| **Total** | **
|
|
37
|
+
| **Total** | **8** |
|
|
50
38
|
|
|
51
39
|
## Viewing Locally
|
|
52
40
|
|
|
53
41
|
All files are self-contained HTML. Open directly in any browser:
|
|
54
42
|
|
|
55
43
|
```bash
|
|
56
|
-
# Open the
|
|
57
|
-
open docs/
|
|
58
|
-
|
|
59
|
-
# Open a specific walkthrough
|
|
60
|
-
open docs/walkthrough/architecture.html
|
|
44
|
+
# Open the overview
|
|
45
|
+
open docs/overview.html
|
|
61
46
|
|
|
62
47
|
# Open a demo app
|
|
63
48
|
open examples/demo-saas-dashboard.html
|
|
64
49
|
|
|
65
50
|
# Or serve the entire repo with a local server
|
|
66
51
|
python3 -m http.server 8080
|
|
67
|
-
# Then visit http://localhost:8080/docs/
|
|
52
|
+
# Then visit http://localhost:8080/docs/overview.html
|
|
68
53
|
```
|
|
69
54
|
|
|
70
55
|
## Design
|
|
@@ -75,4 +60,4 @@ All interactive content shares these characteristics:
|
|
|
75
60
|
- **No build step** -- Open in any browser, works offline (except Google Fonts)
|
|
76
61
|
- **Dark theme** -- Consistent dark design with purple accent (#553DE9)
|
|
77
62
|
- **Responsive** -- Adapts to mobile, tablet, and desktop viewports
|
|
78
|
-
- **No
|
|
63
|
+
- **No build step dependencies** -- No npm packages; `docs/overview.html` loads Mermaid from a CDN to draw its diagrams
|
package/docs/EVALUATING.md
CHANGED
|
@@ -191,9 +191,8 @@ both of us if you find it here.
|
|
|
191
191
|
|
|
192
192
|
- **No published enterprise case studies.** We have adoption signal (fork ratio
|
|
193
193
|
well above the norm for a tool this size) but no named enterprise references.
|
|
194
|
-
- **No independent third-party benchmark placement.**
|
|
195
|
-
|
|
196
|
-
be too.
|
|
194
|
+
- **No independent third-party benchmark placement.** Public leaderboards are
|
|
195
|
+
self-reported, and ours would be too.
|
|
197
196
|
- **Only the CLI surface is audited, not whole products.** Section 6 measures
|
|
198
197
|
every named competitor that ships a local CLI (opencode, aider, codex, Claude
|
|
199
198
|
Code, cursor-agent) and none exposes output verification. That is a real
|
package/docs/INSTALLATION.md
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
The flagship product of [Autonomi](https://www.autonomi.dev/). Loki Mode is a spec-driven autonomous builder with a built-in trust layer that takes any spec to a deployed product and verifies completion with evidence (quality gates plus a completion council), not just a "done" claim. Complete installation instructions for all platforms and use cases.
|
|
4
4
|
|
|
5
|
-
**Version:** v10.6.
|
|
5
|
+
**Version:** v10.6.7
|
|
6
|
+
|
|
7
|
+
**Engine note:** `loki "<task>"`, `loki owner/repo#N` and `loki quick` run the Loki 10 engine. `loki start` still routes to the legacy engine, which is being removed (planned work resumes 2026-10-07); prefer `loki owner/repo#N`. See [docs/v10/GUIDE.md](v10/GUIDE.md).
|
|
6
8
|
|
|
7
9
|
---
|
|
8
10
|
|
|
@@ -149,10 +151,9 @@ Install Loki Mode without the bundled bun binary. This reduces the package size
|
|
|
149
151
|
- OpenTelemetry instrumentation packages
|
|
150
152
|
|
|
151
153
|
**What happens:**
|
|
152
|
-
-
|
|
153
|
-
- Each `loki` command that would use the Loki 10 engine prints this as the first line on stderr: "loki: the Loki 10 engine cannot run on this machine: no working bun (none on PATH, and the bundled bun for darwin-aarch64 is missing). Running the legacy engine instead. To fix: install bun from https://bun.sh, or reinstall loki-mode without --omit=optional."
|
|
154
|
+
- Loki 10 requires Bun. Each `loki` command prints an error on stderr if Bun is not found: "loki: the Loki 10 engine cannot run on this machine: no working bun (none on PATH, and the bundled bun for darwin-aarch64 is missing). To fix: install bun from https://bun.sh, or reinstall loki-mode without --omit=optional."
|
|
154
155
|
|
|
155
|
-
**To restore Loki
|
|
156
|
+
**To restore Loki access:**
|
|
156
157
|
- Install bun: `curl -fsSL https://bun.sh/install | bash` or `brew install oven-sh/bun/bun`
|
|
157
158
|
- Or reinstall loki-mode without the flag: `npm install -g loki-mode`
|
|
158
159
|
|
|
@@ -164,7 +165,7 @@ Install Loki Mode without the bundled bun binary. This reduces the package size
|
|
|
164
165
|
brew tap asklokesh/tap && brew install loki-mode
|
|
165
166
|
```
|
|
166
167
|
|
|
167
|
-
Installs the `loki` CLI.
|
|
168
|
+
Installs the `loki` CLI. Loki 10 requires Bun; if bun is not installed, run `brew install oven-sh/bun/bun`. Without bun, each command exits 1 with an error message.
|
|
168
169
|
|
|
169
170
|
To also install the skill for interactive use with all providers:
|
|
170
171
|
|
package/docs/TOOLS.md
CHANGED
|
@@ -607,7 +607,7 @@ Model cost advisor -- /tmp/ws
|
|
|
607
607
|
Projected saving: UNKNOWN
|
|
608
608
|
Records found: 0 measured: 0 priced: 0
|
|
609
609
|
|
|
610
|
-
Cited external benchmark
|
|
610
|
+
Cited external benchmark -- NOT a measurement of your workload:
|
|
611
611
|
MiniMax M2.5 (open weights) score 75.8 cost $36.64
|
|
612
612
|
Claude Opus 4.6 score 75.6 cost $275.76
|
|
613
613
|
the harness itself was worth about 3.4 points on an identical model
|
package/docs/air-gapped.md
CHANGED
|
@@ -13,7 +13,7 @@ Verified from vendor documentation, 2026-07-31:
|
|
|
13
13
|
| Cursor | No. Cloud service; embeddings are uploaded (obfuscated and encrypted). |
|
|
14
14
|
| Claude Code | Partly. Runs against Bedrock / Vertex / Foundry in your own cloud, so data residency is yours -- but a model endpoint is still required. |
|
|
15
15
|
| Lovable, Replit, Emergent | No. Browser products on their infrastructure. |
|
|
16
|
-
| opencode | Structurally yes (MIT, self-hostable) -- but no
|
|
16
|
+
| opencode | Structurally yes (MIT, self-hostable) -- but no SSO, audit logs, or support. |
|
|
17
17
|
|
|
18
18
|
Devin's is the strongest enterprise packaging in the category and it still
|
|
19
19
|
cannot run disconnected. That is a structural property of a hosted control
|
package/docs/dashboard-guide.md
CHANGED
|
@@ -26,6 +26,8 @@ The dashboard automatically syncs with Loki Mode when it's running, polling `das
|
|
|
26
26
|
|
|
27
27
|
**Ports:** The dashboard and API run on unified port **57374** (FastAPI serves both). See [INSTALLATION.md](INSTALLATION.md#ports) for details.
|
|
28
28
|
|
|
29
|
+
**Bound port:** if 57374 is held by something that is not this install's dashboard (another project, an older version, a foreign process), Loki walks to the next free port and never reuses or opens the foreign one. `loki start` and `loki dashboard` open and print the URL of the port actually bound; `loki start` publishes it to `.loki/dashboard/url`. A running dashboard is reused only when its `/health` reports the same version and install path.
|
|
30
|
+
|
|
29
31
|
---
|
|
30
32
|
|
|
31
33
|
## UI Components
|
|
@@ -72,7 +72,7 @@ autonomy/ # Runtime and autonomous execution
|
|
|
72
72
|
context-tracker.py # Context window usage tracking
|
|
73
73
|
notification-checker.py # Notification trigger evaluation
|
|
74
74
|
templates/ # 21 PRD templates (saas, cli, discord-bot, etc.)
|
|
75
|
-
benchmarks/ #
|
|
75
|
+
benchmarks/ # benchmark harnesses
|
|
76
76
|
```
|
|
77
77
|
|
|
78
78
|
## Codebase Knowledge Graph (Quick Reference)
|
|
@@ -202,7 +202,7 @@ Key methods:
|
|
|
202
202
|
- `AuditLog.verifyChain()` -- Verify hash chain integrity, returns `{ valid, entries, brokenAt, error }`
|
|
203
203
|
- `AuditLog.readEntries(filter)` -- Query entries with `who`, `what`, `since`, `until` filters
|
|
204
204
|
|
|
205
|
-
The public API at `src/audit/index.js` adds
|
|
205
|
+
The public API at `src/audit/index.js` adds audit report summaries and data residency checks (`checkProvider(provider, region)`).
|
|
206
206
|
|
|
207
207
|
**Python Audit (Dashboard-Level):** `dashboard/audit.py`
|
|
208
208
|
|
package/docs/siem-integration.md
CHANGED
|
@@ -474,8 +474,8 @@ enterprise:
|
|
|
474
474
|
## Compliance Reporting
|
|
475
475
|
|
|
476
476
|
**Loki does not generate framework-specific compliance reports.** An earlier
|
|
477
|
-
version of this page showed
|
|
478
|
-
|
|
477
|
+
version of this page showed framework-specific export and report commands.
|
|
478
|
+
They do not exist:
|
|
479
479
|
`loki enterprise audit` has only `summary` and `tail`, and `loki compliance`
|
|
480
480
|
has only `snapshot`.
|
|
481
481
|
|
|
@@ -73,7 +73,7 @@ Rules for every card: file sets do not overlap; only CP-02 touches supervisor.ts
|
|
|
73
73
|
|---|---|---|---|---|
|
|
74
74
|
| CP-00 | Corpus: events.jsonl and receipts written by the real supervisor under the engine10 e2e fake sessions (VERIFIED, PARTIAL, FAILED, BLOCKED, cap.hit, tampered, unpriced cost, resumed). `packages/control-plane/test/fixtures/runs/` + `EXPECTED.json` | EXPECTED.json counts equal a direct `fold()` over each file | LOW | none |
|
|
75
75
|
| CP-01 | **Parallel A.** Service + DB: `src/server/{app,ingest,runs}.ts`, `src/db/{schema,migrate}.ts`, `drizzle/`, `package.json` | ingest corpus twice: run count, verdict counts, cost_usd (null where expected), duplicate=all on 2nd pass; changed line gives 409 | MEDIUM | CP-00 |
|
|
76
|
-
| CP-02 | **Parallel B.** Shipper + backfill: `src/shipper/{ship,backfill}.ts`, hook `loki-ts/src/
|
|
76
|
+
| CP-02 | **Parallel B.** Shipper + backfill: `src/shipper/{ship,backfill}.ts`, hook `loki-ts/src/e10ext/ship_hook.ts`, one line each in supervisor.ts and registry.ts | backfill corpus into a CP-01 stub server; kill mid-batch, rerun: every event exactly once; redacted token never appears in the posted body; ship.json advances | MEDIUM | CP-00 |
|
|
77
77
|
| CP-03 | **Parallel C.** UI: `ui/` (Vite, React, Tailwind), Runs list with filters, run detail timeline, receipt and NOT PROVEN panel; empty states | build, render against section 4 JSON captured from the corpus: row count, verdict badges and NOT PROVEN items match EXPECTED.json; empty DB shows "no runs ingested" | MEDIUM | CP-00 |
|
|
78
78
|
| CP-04 | Wire: service serves `ui/dist`; `loki control [serve,backfill,status]` in autonomy/loki + loki-ts cli; bundle into the npm package (`files[]`) | `npm pack` tarball contains server and UI; `loki control serve` + backfill corpus: /v1/runs count = corpus | MEDIUM | 01,02,03 |
|
|
79
79
|
| CP-05 | Local lifecycle: `src/local/lifecycle.ts` (instance.json, reuse rule, restart, replay) | stale-version instance not reused; dead pid restarted and replayed; never touches unrecorded pid | MEDIUM | CP-04 |
|