loki-mode 10.8.0 → 10.9.1
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 +2 -2
- package/SKILL.md +2 -2
- package/VERSION +1 -1
- package/autonomy/loki +16 -31
- package/autonomy/tui.sh +5 -1
- package/dashboard/__init__.py +1 -1
- package/dashboard/api_phases.py +1 -1
- package/dashboard/api_start.py +0 -1
- package/dashboard/server.py +22 -138
- package/docs/COCKPIT-SPEC.md +3 -1
- package/docs/DASHBOARD-9.12-EVIDENCE.md +1 -1
- package/docs/DASHBOARD-ARCHITECTURE.md +13 -11
- package/docs/DASHBOARD_V2_CHECKLIST.md +2 -0
- package/docs/INSTALLATION.md +12 -11
- package/docs/MERGE-DEDUP-MAP.md +1 -1
- package/docs/MERGE-ROUTE-MAP.md +1 -1
- package/docs/MERGE3-PLAN.md +2 -2
- package/docs/R3-COST-OBSERVABILITY-DESIGN.md +2 -2
- package/docs/R4-TRUST-TRAJECTORY-DESIGN.md +1 -1
- package/docs/R5-AUTO-WIKI-DESIGN.md +1 -1
- package/docs/R6-ROLLBACK-CHECKPOINT-PLAN.md +1 -1
- package/docs/RARV-C-100X-PLAN.md +3 -3
- package/docs/SONNET5-DEFAULT-PLAN.md +2 -2
- package/docs/SYNERGY-TASKS.md +1 -1
- package/docs/TOOL-INTEGRATION.md +1 -1
- package/docs/TOP-100-BACKLOG.md +1 -1
- package/docs/alternative-installations.md +1 -1
- package/docs/architecture/ADR-001-runtime-migration.md +1 -1
- package/docs/architecture/DASHBOARD_V2_ARCHITECTURE.md +2 -0
- package/docs/audit-logging.md +2 -0
- package/docs/authentication.md +2 -0
- package/docs/authorization.md +2 -0
- package/docs/certification/02-enterprise-features/lab.md +2 -0
- package/docs/certification/02-enterprise-features/lesson.md +2 -0
- package/docs/certification/04-production-deployment/lab.md +2 -0
- package/docs/certification/04-production-deployment/lesson.md +2 -0
- package/docs/control-plane-migration.md +97 -0
- package/docs/dashboard-guide.md +6 -7
- package/docs/dev/release-checklist.md +9 -11
- package/docs/enterprise/integration-cookbook.md +2 -0
- package/docs/enterprise/migration.md +1 -1
- package/docs/enterprise/performance.md +3 -1
- package/docs/enterprise/sdk-guide.md +2 -0
- package/docs/enterprise/security.md +2 -0
- package/docs/plans/FORGE-AUTONOMOUS-QUEUE.md +2 -2
- package/docs/research-2026-07/OBSERVABILITY-TOOL-SPEC.md +1 -1
- package/docs/retrospectives/v7.5.15-honesty-audit.md +2 -2
- package/docs/test-scenarios/enterprise-scenarios.md +2 -2
- package/docs/v10/ARCHITECT-CUTS.md +9 -9
- package/docs/v10/BACKLOG.md +7 -7
- package/docs/v10/BOARD.md +25 -25
- package/docs/v10/CONTROL-PLANE.md +4 -4
- package/docs/v10/CP-ENTERPRISE-UI.md +66 -66
- package/docs/v10/D51-PHASE-B.md +1 -1
- package/docs/v10/DECISIONS.md +3 -3
- package/docs/v10/DEPS.md +10 -10
- package/docs/v10/FAILURE-CLASSES.md +45 -1
- package/docs/v10/LEGACY-REMOVAL.md +2 -2
- package/docs/v10/SWARM.md +2 -2
- package/loki-ts/dist/cockpit.js +11 -11
- package/loki-ts/dist/loki.js +596 -579
- package/magic/core/design_tokens.py +1 -2
- package/magic/core/generator.py +2 -2
- package/magic/tokens/README.md +1 -3
- package/mcp/__init__.py +1 -1
- package/package.json +2 -7
- package/packages/control-plane/dist/server.js +1683 -843
- package/packages/control-plane/src/server/legacy/routes-audit.ts +50 -0
- package/packages/control-plane/src/server/legacy/routes-control.ts +26 -0
- package/packages/control-plane/src/server/legacy/routes-memory.ts +30 -0
- package/packages/control-plane/src/server/legacy/routes.ts +58 -58
- package/packages/control-plane/src/server/legacy/shim.ts +10 -4
- package/packages/control-plane/src/server/routes/checkpoints.ts +171 -0
- package/packages/control-plane/src/server/routes/index.ts +4 -1
- package/packages/control-plane/src/server/routes/memory.ts +219 -0
- package/packages/control-plane/src/server/routes/session_control.ts +155 -0
- package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
- package/references/magic-modules-patterns.md +2 -2
- package/skills/factory-operations.md +3 -3
- package/skills/magic-modules.md +1 -1
- package/skills/release-cadence.md +1 -1
- package/tools/audit-docs.py +1 -1
- package/tools/index-codebase.py +1 -1
- package/web-app/dist/assets/{AdminPage-DDDvUz0N.js → AdminPage-DqMnfZrH.js} +1 -1
- package/web-app/dist/assets/{Avatar-Dcdz46i6.js → Avatar-BEof29du.js} +1 -1
- package/web-app/dist/assets/{Badge-BB24cCpK.js → Badge-WD53OL5m.js} +1 -1
- package/web-app/dist/assets/{Button-D0-DmPZL.js → Button-Rzk5flhU.js} +1 -1
- package/web-app/dist/assets/{CockpitPage-CdjpU2JW.js → CockpitPage-Bqz3PCMh.js} +1 -1
- package/web-app/dist/assets/{ComparePage-DT5U0y0d.js → ComparePage-Byo2NzAZ.js} +1 -1
- package/web-app/dist/assets/{ErrorBoundary-lEHcl0EO.js → ErrorBoundary-BuE0kH3W.js} +1 -1
- package/web-app/dist/assets/{EvidenceReceiptPanel-GpnWvdCr.js → EvidenceReceiptPanel-CKFHOPBx.js} +1 -1
- package/web-app/dist/assets/{GitHubIssuesPanel-C7VOh1B7.js → GitHubIssuesPanel-Df_kTMqI.js} +1 -1
- package/web-app/dist/assets/{GitHubPRsPanel-G_kOuINv.js → GitHubPRsPanel-CouvcKrZ.js} +1 -1
- package/web-app/dist/assets/{HomePage-PqRisOny.js → HomePage-dEpLzj0x.js} +2 -2
- package/web-app/dist/assets/{LoginPage-DU7pFAkf.js → LoginPage-6DVjUND5.js} +1 -1
- package/web-app/dist/assets/{MagicPage-C5JWIWMk.js → MagicPage-BDQ9MOfY.js} +1 -1
- package/web-app/dist/assets/{MetricsPage-CbIGS_qo.js → MetricsPage-CXiJ04G_.js} +1 -1
- package/web-app/dist/assets/{NotFoundPage-vU1pvdSt.js → NotFoundPage-BaXhZvyj.js} +1 -1
- package/web-app/dist/assets/{ProjectPage-SsixIPPv.js → ProjectPage-BzE4V7Ti.js} +3 -3
- package/web-app/dist/assets/{ProjectsPage-BfQKSR9k.js → ProjectsPage-ipf6TLMX.js} +1 -1
- package/web-app/dist/assets/{SettingsPage-B8YfXAom.js → SettingsPage-BDxkUKN6.js} +1 -1
- package/web-app/dist/assets/{ShowcasePage-Ba407f2-.js → ShowcasePage-YQXD72SM.js} +1 -1
- package/web-app/dist/assets/{SystemSettingsPage-DzNQhhBS.js → SystemSettingsPage-Dou7zHS0.js} +1 -1
- package/web-app/dist/assets/{TeamsPage-tqUnpZ15.js → TeamsPage-CQarfcYr.js} +1 -1
- package/web-app/dist/assets/{TemplatesPage-ClB5EpI3.js → TemplatesPage-CPi1R8Xj.js} +1 -1
- package/web-app/dist/assets/{TerminalOutput-CBvpYfEu.js → TerminalOutput-WiGhWdYD.js} +1 -1
- package/web-app/dist/assets/{activity-C1s0L_X9.js → activity-DOa7ejQA.js} +1 -1
- package/web-app/dist/assets/{bell-DMEiXr73.js → bell-CX-VAlYN.js} +1 -1
- package/web-app/dist/assets/{bot-BF_xIOxu.js → bot-EDXaZmHc.js} +1 -1
- package/web-app/dist/assets/{check-Dv1Ynvrs.js → check-CnBdKk3L.js} +1 -1
- package/web-app/dist/assets/{chevron-left-Ddhsod7S.js → chevron-left-BJ_ydRQW.js} +1 -1
- package/web-app/dist/assets/{circle-alert-OATHUkBZ.js → circle-alert-tz8ufhc_.js} +1 -1
- package/web-app/dist/assets/{clock-C1Ltva07.js → clock-DFBZPSsH.js} +1 -1
- package/web-app/dist/assets/{cloud-B-S4oOy9.js → cloud-uy3p_5Q7.js} +1 -1
- package/web-app/dist/assets/{code-xml-D3Femn_F.js → code-xml-3CbYD9YL.js} +1 -1
- package/web-app/dist/assets/{database-DBSeFgO3.js → database-YiNBXc9c.js} +1 -1
- package/web-app/dist/assets/{dollar-sign-sgDgNuGE.js → dollar-sign-D0wBa4Cv.js} +1 -1
- package/web-app/dist/assets/{file-code-corner-C-MbdZEc.js → file-code-corner-DDdZVZ5v.js} +1 -1
- package/web-app/dist/assets/{file-plus-CCB6yqXv.js → file-plus-D09LTBqt.js} +1 -1
- package/web-app/dist/assets/{globe-DlbrNAj1.js → globe-BirTPwff.js} +1 -1
- package/web-app/dist/assets/{hammer-B-DWm695.js → hammer-DaE5qgnd.js} +1 -1
- package/web-app/dist/assets/{index-Dvny-1SU.js → index-D8t7KnQf.js} +3 -3
- package/web-app/dist/assets/{layers-99qsKpOT.js → layers-DVVrckRY.js} +1 -1
- package/web-app/dist/assets/{loader-circle-ZvZyZl3J.js → loader-circle-2-nMGmcb.js} +1 -1
- package/web-app/dist/assets/{lock-DosGjcxP.js → lock-D0Xj43pC.js} +1 -1
- package/web-app/dist/assets/{package-C-PumesN.js → package-BB7S3egm.js} +1 -1
- package/web-app/dist/assets/{plus-CTYYskTB.js → plus-BLhoMrn3.js} +1 -1
- package/web-app/dist/assets/{refresh-cw-qW2ztTFS.js → refresh-cw-DMc2uPLw.js} +1 -1
- package/web-app/dist/assets/{rotate-ccw-ZIKrf-vO.js → rotate-ccw-DM3IP9x7.js} +1 -1
- package/web-app/dist/assets/{scroll-text-BamlXjAT.js → scroll-text-lH2uW7rB.js} +1 -1
- package/web-app/dist/assets/{server-BljXb79I.js → server-BkerZcdR.js} +1 -1
- package/web-app/dist/assets/{shield-alert-Dr6eT9c_.js → shield-alert-B8ohcUfu.js} +1 -1
- package/web-app/dist/assets/{thumbs-up-v3oBXZgU.js → thumbs-up-CTIxLzPD.js} +1 -1
- package/web-app/dist/assets/{trash-2-BOuIrCpi.js → trash-2-C3zIpsH5.js} +1 -1
- package/web-app/dist/assets/{trending-down-Dp7jMCgH.js → trending-down-BTT7wV4Y.js} +1 -1
- package/web-app/dist/assets/{trending-up-CDiur-nP.js → trending-up-BzHdCDvF.js} +1 -1
- package/web-app/dist/assets/{upload-DxIHXhNE.js → upload-HxR34-A8.js} +1 -1
- package/web-app/dist/assets/{usePolling-D2Uu-YZb.js → usePolling-DDj6Fupy.js} +1 -1
- package/web-app/dist/assets/{user-BVWCUAfF.js → user-qH5y9yNy.js} +1 -1
- package/web-app/dist/index.html +1 -1
- package/dashboard/static/assets/mermaid.min.js +0 -2030
- package/dashboard/static/cost.html +0 -344
- package/dashboard/static/favicon.svg +0 -5
- package/dashboard/static/index.html +0 -15577
- package/dashboard/static/proofs.html +0 -194
- package/dashboard/static/start.html +0 -131
- package/dashboard/static/trust.html +0 -325
package/docs/MERGE3-PLAN.md
CHANGED
|
@@ -68,7 +68,7 @@ Change the `open` URL from `http://127.0.0.1:${PURPLE_LAB_DEFAULT_PORT}/` to `ht
|
|
|
68
68
|
## Release Pipeline Wiring
|
|
69
69
|
|
|
70
70
|
### 7. Root `package.json` `prepublishOnly` (line ~106)
|
|
71
|
-
Append `&& cd ../web-app && npm ci && npm run build && test -f dist/index.html` after the existing
|
|
71
|
+
Append `&& cd ../web-app && npm ci && npm run build && test -f dist/index.html` after the existing legacy-ui build.
|
|
72
72
|
|
|
73
73
|
### 8. `Dockerfile`
|
|
74
74
|
Add `COPY` for web-app build artifacts + server files. Mirror the `dashboard/` COPY pattern. (Merge-4 owns the actual import; Merge-3 ensures files are in the image.)
|
|
@@ -109,7 +109,7 @@ run_check "web-app build produces /lab/-prefixed assets" \
|
|
|
109
109
|
## NOT Done In This Phase
|
|
110
110
|
|
|
111
111
|
- Auto-spawn web-app subprocess from `loki dashboard` (Merge-4).
|
|
112
|
-
- Sidebar entry in `
|
|
112
|
+
- Sidebar entry in `legacy-ui-static/index.html` (Merge-6).
|
|
113
113
|
- Deep state dedup (Merge-5).
|
|
114
114
|
- Deprecation of `loki web` (Merge-7).
|
|
115
115
|
- `vite-plugin-html` dev `/` -> `/lab/` redirect (nice-to-have, not blocking).
|
|
@@ -90,7 +90,7 @@ Read-only. Returns two honest series plus a budget block:
|
|
|
90
90
|
`/api/cost` and `/api/budget` are left UNCHANGED (existing frontend + tests
|
|
91
91
|
depend on them). The new endpoint is additive.
|
|
92
92
|
|
|
93
|
-
### 2. Dashboard panel: `
|
|
93
|
+
### 2. Dashboard panel: `legacy-ui-static/cost.html`
|
|
94
94
|
|
|
95
95
|
Self-contained, zero-build, all CSS+JS inlined (mirrors `proofs.html`). Fetches
|
|
96
96
|
`/api/cost/timeline`. Shows: project total, budget gauge with a colored
|
|
@@ -144,7 +144,7 @@ Add a non-pausing warn when crossing 80%, keep the 100% pause:
|
|
|
144
144
|
## Files (for the integrator to cherry-pick)
|
|
145
145
|
|
|
146
146
|
- `dashboard/server.py` (add `/api/cost/timeline`)
|
|
147
|
-
- `
|
|
147
|
+
- `legacy-ui-static/cost.html` (new)
|
|
148
148
|
- `autonomy/loki` (add `cmd_cost` + dispatch + help)
|
|
149
149
|
- `autonomy/run.sh` (warn-at-80% in `check_budget_limit`)
|
|
150
150
|
- `loki-ts/src/runner/budget.ts` (warn flag)
|
|
@@ -94,7 +94,7 @@ is always recomputable from `.loki/proofs/`. Deleting it loses nothing.
|
|
|
94
94
|
`/api/cost/timeline`). Reads `.loki/proofs/*/proof.json`, returns the
|
|
95
95
|
per-run series + per-axis direction + insufficient flag.
|
|
96
96
|
|
|
97
|
-
3. Dashboard panel: standalone `
|
|
97
|
+
3. Dashboard panel: standalone `legacy-ui-static/trust.html` + `/trust` route
|
|
98
98
|
(mirrors `cost.html` + `/cost`), plus a nav entry and SPA section in
|
|
99
99
|
`build-standalone.js` (mirrors the cost panel wiring exactly).
|
|
100
100
|
|
|
@@ -21,7 +21,7 @@ the codebase has not changed (reuses the R1 codebase-signature idea).
|
|
|
21
21
|
| Org knowledge graph | `memory/knowledge_graph.py` (`OrganizationKnowledgeGraph`) | Token-overlap scoring idea reused (`_tokenize` / `query_patterns`). NOT a codebase index -- it aggregates `.loki/memory/semantic/*.json` patterns across projects, keyed on `~/.loki/knowledge`. See "Honest reuse" below. |
|
|
22
22
|
| Memory retrieval | `memory/retrieval.py` (`MemoryRetrieval`) | Inspected. It retrieves memory entries (episodic/semantic/procedural), NOT source code. Not a code indexer. Not reused for code retrieval. |
|
|
23
23
|
| Dashboard read-API + traversal-safety | `dashboard/server.py:7191` (`_safe_proof_run_dir`) | Pattern reused for the wiki section/path param (`_safe_wiki_section`). |
|
|
24
|
-
| Dashboard web components | `
|
|
24
|
+
| Dashboard web components | `legacy-ui/components/*.js` (Web Components) | New `loki-wiki-browser.js` follows the same `LokiElement` convention; registered in `index.js`. |
|
|
25
25
|
|
|
26
26
|
### Honest reuse statement
|
|
27
27
|
|
|
@@ -33,7 +33,7 @@ dashboard `GET /api/checkpoints` normalizes them).
|
|
|
33
33
|
|
|
34
34
|
### Dashboard
|
|
35
35
|
- `GET /api/checkpoints`, `GET /api/checkpoints/{id}`, `POST /api/checkpoints` exist.
|
|
36
|
-
- The UI component `
|
|
36
|
+
- The UI component `legacy-ui/components/loki-checkpoint-viewer.js` (601 lines) ALREADY
|
|
37
37
|
renders list + create + rollback-with-two-step-confirm and POSTs to
|
|
38
38
|
`POST /api/checkpoints/{id}/rollback` -- but that endpoint **did not exist**. The
|
|
39
39
|
dashboard rollback button was DEAD.
|
package/docs/RARV-C-100X-PLAN.md
CHANGED
|
@@ -211,9 +211,9 @@ Every commit proven on BOTH routes (`bin/loki` + `LOKI_LEGACY_BASH=1 bin/loki`).
|
|
|
211
211
|
- **FIX in v8 - release-notes bug** (`release.yml:179/231`): awk expects bracketed `## [VERSION]` but
|
|
212
212
|
CHANGELOG uses unbracketed `## vVERSION`, so release notes have silently been generic. Fix the awk or
|
|
213
213
|
the header format (one PR, verify the extracted body is non-empty).
|
|
214
|
-
- **Dashboard frontend rebuilt** (`cd
|
|
215
|
-
`
|
|
216
|
-
- **Pre-publish validation** (CLAUDE.md 3a): `npm pack --dry-run` contains web-app/dist +
|
|
214
|
+
- **Dashboard frontend rebuilt** (`cd legacy-ui && npm ci && npm run build:all`) - writes both
|
|
215
|
+
`legacy-ui/dist/` and `legacy-ui-static/`.
|
|
216
|
+
- **Pre-publish validation** (CLAUDE.md 3a): `npm pack --dry-run` contains web-app/dist + legacy-ui-static;
|
|
217
217
|
fresh global install serves web app + API.
|
|
218
218
|
- **Per-job release verification**: `gh run view <id> --json jobs` per channel (npm/Docker/Homebrew/Release),
|
|
219
219
|
not just "workflow green".
|
|
@@ -100,10 +100,10 @@ opt-in advisor path.
|
|
|
100
100
|
with allowlist haiku|sonnet|opus|fable (already does). Add start-time selection: `start_build`
|
|
101
101
|
(server.py:3234) accepts an optional `model` that writes the override file BEFORE launch (so iteration
|
|
102
102
|
1 picks it up). Validate against the same allowlist + clamp.
|
|
103
|
-
- Frontend (
|
|
103
|
+
- Frontend (legacy-ui/src): add an accessible model selector (haiku/sonnet/opus) on the start/new-run
|
|
104
104
|
surface AND a mid-run switcher that calls POST /api/session/model. Real design-system tokens, keyboard
|
|
105
105
|
accessible, no AI-aesthetic. Show current effective model + that switch applies at next iteration.
|
|
106
|
-
Rebuild
|
|
106
|
+
Rebuild legacy-ui-static per CLAUDE.md release step 2.
|
|
107
107
|
|
|
108
108
|
### Lane E - Catalog IDs, pricing note, parity tests [engineer 5]
|
|
109
109
|
- model_catalog.json: opus-4-7 -> claude-opus-4-8 (3 occurrences), sonnet-4-6 -> claude-sonnet-5
|
package/docs/SYNERGY-TASKS.md
CHANGED
|
@@ -60,7 +60,7 @@ This document tracks all implementation tasks to achieve tool synergy and compet
|
|
|
60
60
|
|
|
61
61
|
| Task ID | Task | Status | Priority | Notes |
|
|
62
62
|
|---------|------|--------|----------|-------|
|
|
63
|
-
| SYN-025 | Extract dashboard as reusable web components | Done | High |
|
|
63
|
+
| SYN-025 | Extract dashboard as reusable web components | Done | High | legacy-ui/ - ARIA, keyboard nav, focus mgmt - peer reviewed |
|
|
64
64
|
| SYN-026 | Create VS Code webview integration | Pending | High | Embed dashboard in VS Code |
|
|
65
65
|
| SYN-027 | Unify styling and behavior | Pending | Medium | Consistent UX |
|
|
66
66
|
| SYN-028 | Add dashboard feature parity check | Pending | Low | Ensure all features available |
|
package/docs/TOOL-INTEGRATION.md
CHANGED
package/docs/TOP-100-BACKLOG.md
CHANGED
|
@@ -87,7 +87,7 @@ Generated 2026-07-01 by the top100-backlog-enumeration ultracode workflow (7 age
|
|
|
87
87
|
| 65 | medium | M | founder-gated | adoption | MCP registry submission + Glama claim + awesome-list PRs |
|
|
88
88
|
| 66 | medium | M | autonomous | saas | autonomi-saas UI/UX pass: build-watching pane + finished cues from trust verdict |
|
|
89
89
|
| 67 | medium | XL | autonomous | dashboard | Server.py route modularization (~10K-line monolith, no domain separation) |
|
|
90
|
-
| 68 | medium | L | autonomous | dashboard | Large
|
|
90
|
+
| 68 | medium | L | autonomous | dashboard | Large legacy-ui components modularization (5 files 1K-1.9K lines) |
|
|
91
91
|
| 69 | medium | L | founder-gated | engine | Wave-13 deferred trust fixes + PRD-reuse spurious-update design fix |
|
|
92
92
|
| 70 | medium | M | community | dashboard | Dashboard dark-toggle iframe theme not following SPA (harness/product parity) |
|
|
93
93
|
| 71 | medium | M | community | ci | Sonnet-5 calibration follow-ups: test-verify --hosted + gate missing-tool handling |
|
|
@@ -121,7 +121,7 @@ mv loki-mode-8.0.0 ~/.claude/skills/loki-mode
|
|
|
121
121
|
|
|
122
122
|
> **DEPRECATED as of v7.2.0.** The Loki Mode VS Code extension is no longer
|
|
123
123
|
> maintained and is no longer published to the VS Code Marketplace. Use the
|
|
124
|
-
>
|
|
124
|
+
> Control Plane instead (`loki dashboard`).
|
|
125
125
|
> The `vscode-extension/` source remains in the repository for contributors who
|
|
126
126
|
> want to build it locally. See
|
|
127
127
|
> [INSTALLATION.md](INSTALLATION.md#vs-code-extension-deprecated) for details.
|
|
@@ -168,7 +168,7 @@ Reasons:
|
|
|
168
168
|
|
|
169
169
|
### Phase 3: Build/release tooling
|
|
170
170
|
- Replace npm publish with `bun publish` in CI
|
|
171
|
-
- Replace
|
|
171
|
+
- Replace legacy-ui esbuild with `bun build` (already 4-5x faster)
|
|
172
172
|
- Replace pytest where possible with `bun test` for non-Python tests
|
|
173
173
|
- Measure: full CI wall time, npm install time
|
|
174
174
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Loki Mode Dashboard V2 Architecture
|
|
2
2
|
|
|
3
|
+
> **Historical:** this describes the classic dashboard, removed in Loki Mode 10.8. The Control Plane is the only UI; see [control-plane-migration.md](../control-plane-migration.md).
|
|
4
|
+
|
|
3
5
|
**Status:** Design Phase
|
|
4
6
|
**Version:** 0.1.0 (Draft)
|
|
5
7
|
**Date:** 2026-02-01
|
package/docs/audit-logging.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Audit Logging
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and port 57374 are removed in Loki Mode 10.8; the UI is the Control Plane (`loki dashboard`, default port 47821). Examples below that use port 57374 or `/api/*` describe the legacy API server. See [control-plane-migration.md](control-plane-migration.md) for the `/v1/*` mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
Audit trails for Loki Mode operations.
|
|
4
6
|
|
|
5
7
|
## Overview
|
package/docs/authentication.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Authentication Guide
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and port 57374 are removed in Loki Mode 10.8; the UI is the Control Plane (`loki dashboard`, default port 47821). Examples below that use port 57374 or `/api/*` describe the legacy API server. See [control-plane-migration.md](control-plane-migration.md) for the `/v1/*` mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
Authentication and access control for Loki Mode dashboard and API.
|
|
4
6
|
|
|
5
7
|
## Overview
|
package/docs/authorization.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Authorization Guide
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and port 57374 are removed in Loki Mode 10.8; the UI is the Control Plane (`loki dashboard`, default port 47821). Examples below that use port 57374 or `/api/*` describe the legacy API server. See [control-plane-migration.md](control-plane-migration.md) for the `/v1/*` mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
Role-based access control (RBAC) for Loki Mode (v5.37.0).
|
|
4
6
|
|
|
5
7
|
## Overview
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Module 2 Lab: Configure Enterprise Features
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and port 57374 are removed in Loki Mode 10.8; the UI is the Control Plane (`loki dashboard`, default port 47821). Examples below that use port 57374 or `/api/*` describe the legacy API server. See [control-plane-migration.md](../../control-plane-migration.md) for the `/v1/*` mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
## Objective
|
|
4
6
|
|
|
5
7
|
Enable and verify enterprise features: audit logging, OTEL observability, token authentication, and dashboard TLS.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Module 2: Enterprise Features
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and port 57374 are removed in Loki Mode 10.8; the UI is the Control Plane (`loki dashboard`, default port 47821). Examples below that use port 57374 or `/api/*` describe the legacy API server. See [control-plane-migration.md](../../control-plane-migration.md) for the `/v1/*` mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
## Overview
|
|
4
6
|
|
|
5
7
|
Loki Mode includes enterprise features for audit logging, observability, authentication, and SIEM integration. These features are controlled via environment variables and can be enabled incrementally.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Module 4 Lab: Deploy with Docker Compose
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and port 57374 are removed in Loki Mode 10.8; the UI is the Control Plane (`loki dashboard`, default port 47821). Examples below that use port 57374 or `/api/*` describe the legacy API server. See [control-plane-migration.md](../../control-plane-migration.md) for the `/v1/*` mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
## Objective
|
|
4
6
|
|
|
5
7
|
Deploy Loki Mode using Docker Compose, verify the dashboard is accessible, and configure resource limits.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Module 4: Production Deployment
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and port 57374 are removed in Loki Mode 10.8; the UI is the Control Plane (`loki dashboard`, default port 47821). Examples below that use port 57374 or `/api/*` describe the legacy API server. See [control-plane-migration.md](../../control-plane-migration.md) for the `/v1/*` mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
## Overview
|
|
4
6
|
|
|
5
7
|
Loki Mode can be deployed using Docker, Docker Compose, or direct installation via npm/Homebrew. This module covers deployment options, security hardening, resource management, and production configuration.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Migrating from the classic dashboard to the Control Plane
|
|
2
|
+
|
|
3
|
+
Loki Mode 10.8 removes the classic dashboard UI (`dashboard-ui/`, `dashboard/static/`, and the UI served on port 57374). The Control Plane (`packages/control-plane`, UI in `packages/control-plane/ui`) is the only UI. Deploy files (Helm, compose, ECS) and the clients (SDKs, VS Code, `run.sh`) already point at it.
|
|
4
|
+
|
|
5
|
+
## What changed
|
|
6
|
+
|
|
7
|
+
| Before | Now |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| UI and API on port 57374 (FastAPI, `dashboard/server.py`) | Control Plane on port 47821 by default (`loki control serve`) |
|
|
10
|
+
| `loki dashboard start` serves the classic UI | `loki dashboard`, `loki dashboard start` and `loki dashboard open` open the Control Plane |
|
|
11
|
+
| `dashboard-ui` build (`npm run build:all`) | `cd packages/control-plane && bun run build:all` (UI plus bundled server) |
|
|
12
|
+
| REST under `/api/*` | REST under `/v1/*`, plus `/health` and `/ready` |
|
|
13
|
+
| Token management through the dashboard | One bearer token, `LOKI_CONTROL_TOKEN`, on `/v1/*` |
|
|
14
|
+
|
|
15
|
+
## Start the Control Plane
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
loki control serve # 127.0.0.1:47821, database ~/.loki/control/control.db
|
|
19
|
+
loki control serve --port 0 # any free port; the printed URL is the real one
|
|
20
|
+
loki control status # reachable? how many runs held?
|
|
21
|
+
loki dashboard # reuse a running Control Plane, or start one, and open it
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Notes:
|
|
25
|
+
|
|
26
|
+
- Bun is required (https://bun.sh). Without it `loki dashboard` says so and does not start a server.
|
|
27
|
+
- The default port falls back to any free port when 47821 is taken. An explicit `--port` or `LOKI_CONTROL_PORT` never falls back.
|
|
28
|
+
- While `loki control serve` runs, runs on this machine ship to it automatically through `~/.loki/control/instance.json`. A run never starts the server.
|
|
29
|
+
- Import runs that finished before the server existed: `loki control backfill [DIR]`.
|
|
30
|
+
- Remove runs: `loki control prune --repo OWNER/NAME` or `--before ISO_DATE`, with `--dry-run` to preview.
|
|
31
|
+
- `LOKI_HEADLESS=1`, `LOKI_NO_BROWSER=1` or `--no-open` print the URL instead of opening a browser.
|
|
32
|
+
- `LOKI_CONTROL=0` turns the Control Plane off. `LOKI_CONTROL_DEFAULT=0` makes the bare `loki dashboard` skip it.
|
|
33
|
+
|
|
34
|
+
Environment variables:
|
|
35
|
+
|
|
36
|
+
| Variable | Meaning |
|
|
37
|
+
| --- | --- |
|
|
38
|
+
| `LOKI_CONTROL_PORT` | listen port for `loki control serve`, and the port clients assume (default 47821) |
|
|
39
|
+
| `LOKI_CONTROL_URL` | where clients and the shipper send runs (overrides discovery) |
|
|
40
|
+
| `LOKI_CONTROL_DB` | SQLite path (default `~/.loki/control/control.db`) |
|
|
41
|
+
| `LOKI_CONTROL_HOST` | bind address (default 127.0.0.1) |
|
|
42
|
+
| `LOKI_CONTROL_TOKEN` | bearer token for `/v1/*`; required for any non-loopback bind, otherwise the server exits 2 |
|
|
43
|
+
| `LOKI_CONTROL_ALLOW_INSECURE_BIND` | `1` accepts a tokenless non-loopback bind (not recommended) |
|
|
44
|
+
| `LOKI_CONTROL_ANSWER_DIR` | where BLOCKED-run answers are written |
|
|
45
|
+
|
|
46
|
+
With a token set, send `Authorization: Bearer <token>` on every `/v1/*` call. Actions that touch the machine (start, stop, import, delete, config) exist only on a loopback-bound server and need a JSON content type.
|
|
47
|
+
|
|
48
|
+
## Route mapping
|
|
49
|
+
|
|
50
|
+
Legacy routes come from `dashboard/server.py`. Rows marked "no direct legacy route" are Control Plane routes that did not exist in the classic server.
|
|
51
|
+
|
|
52
|
+
| Legacy | Control Plane |
|
|
53
|
+
| --- | --- |
|
|
54
|
+
| `GET /api/status` | `GET /v1/runs` (list, filters `verdict`, `repo`, `since`, `until`, `group_id`, `limit`, `cursor`), `GET /v1/runs/<source>/<run>` (detail), `GET /v1/stats` |
|
|
55
|
+
| `GET /api/cost` | `GET /v1/stats/cost` |
|
|
56
|
+
| `POST /api/control/start` | `POST /v1/start` (alias `POST /v1/runs`) |
|
|
57
|
+
| `POST /api/control/stop` | `POST /v1/runs/<source>/<run>/stop` |
|
|
58
|
+
| `POST /api/control/resume` | `POST /v1/runs/<source>/<run>/resume` |
|
|
59
|
+
| (none) | `POST /v1/runs/<source>/<run>/retry`, `POST /v1/runs/<source>/<run>/verify`, `POST /v1/runs/<source>/<run>/answer` |
|
|
60
|
+
| log streaming | `GET /v1/runs/<source>/<run>/events`, `GET /v1/runs/<source>/<run>/stream`, `GET /v1/stream`, `GET /v1/runs/<source>/<run>/artifact/<path>` |
|
|
61
|
+
| `GET /api/audit` | `GET /v1/audit` |
|
|
62
|
+
| `GET /api/health` family | `GET /health` (liveness), `GET /ready` (database check) |
|
|
63
|
+
| (no direct legacy route) | `GET /v1/config`, `PUT /v1/config` |
|
|
64
|
+
| (no direct legacy route) | `GET /v1/providers`, `GET /v1/integrations` |
|
|
65
|
+
| (no direct legacy route) | `GET /v1/notifications` |
|
|
66
|
+
| (no direct legacy route) | `GET /v1/merge/queue`, `POST /v1/merge/queue`, `POST /v1/merge/run`, `GET /v1/review/risk` |
|
|
67
|
+
| (no direct legacy route) | `GET /v1/keys` (public key only, loopback only) |
|
|
68
|
+
| (no direct legacy route) | `GET /v1/repos` (names only, loopback only) |
|
|
69
|
+
| (no direct legacy route) | `POST /v1/ingest`, `POST /v1/import`, `DELETE /v1/runs/<source>/<run>` |
|
|
70
|
+
|
|
71
|
+
## Not yet available in the Control Plane
|
|
72
|
+
|
|
73
|
+
These legacy features have no Control Plane route today:
|
|
74
|
+
|
|
75
|
+
- `POST /api/control/pause`, `/api/control/app-restart` and `/api/control/app-stop`.
|
|
76
|
+
- `GET /api/audit/summary` and `GET /api/audit/verify` (the Control Plane has `GET /v1/audit` only).
|
|
77
|
+
- `GET /api/cost/timeline` and `GET /api/health/processes`.
|
|
78
|
+
- API key creation, rotation and revocation (`/api/keys` POST routes, `loki dashboard token`), RBAC and OIDC login. The Control Plane uses the single `LOKI_CONTROL_TOKEN`.
|
|
79
|
+
- The `/lab/` web app and the memory browser.
|
|
80
|
+
- Classic-server options: `loki dashboard --host`, `--tls-cert`, `--tls-key`, `LOKI_DASHBOARD_CORS`, `LOKI_DASHBOARD_PORT` for the UI.
|
|
81
|
+
|
|
82
|
+
## Deploy
|
|
83
|
+
|
|
84
|
+
- Container, Helm and ECS overview: [control-plane-container.md](control-plane-container.md).
|
|
85
|
+
- Docker Compose: `deploy/docker-compose/README.md`. The UI is on host port 57374 by default (`LOKI_DASHBOARD_PORT`), mapped to the Control Plane on container port 47821. `LOKI_CONTROL_TOKEN` is required in `.env`; open the UI with `#token=<token>` appended.
|
|
86
|
+
- Helm: `deploy/helm/README.md` (chart at `deploy/helm/autonomi`, Control Plane deployment in `templates/deployment-controlplane.yaml`).
|
|
87
|
+
- ECS: `deploy/ecs/README.md` and `deploy/ecs/control-plane-task.json` (run exactly one task, the database is single-writer).
|
|
88
|
+
|
|
89
|
+
## Clients
|
|
90
|
+
|
|
91
|
+
SDKs, the VS Code extension and `run.sh` talk to the Control Plane. Set `LOKI_CONTROL_URL` (and `LOKI_CONTROL_TOKEN` when the server has one) to point them at a remote instance.
|
|
92
|
+
|
|
93
|
+
## Building from source
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
cd packages/control-plane && bun run build:all # UI plus dist/server.js
|
|
97
|
+
```
|
package/docs/dashboard-guide.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Loki Mode Dashboard v5.40.0
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and its port 57374 are removed in Loki Mode 10.8. The Control Plane (`loki control serve`, default port 47821) is the only UI. See [control-plane-migration.md](control-plane-migration.md) for startup, the `/api/*` to `/v1/*` route mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
A production-ready realtime dashboard for monitoring and managing Loki Mode autonomous operations. Features a dark Vercel/Linear-inspired theme with purple accents, sidebar navigation, and overview cards.
|
|
4
6
|
|
|
5
7
|
## Overview
|
|
@@ -15,16 +17,13 @@ The Loki Mode Dashboard provides a visual interface to:
|
|
|
15
17
|
## Quick Start
|
|
16
18
|
|
|
17
19
|
```bash
|
|
18
|
-
#
|
|
19
|
-
loki dashboard
|
|
20
|
-
|
|
21
|
-
# Open in browser
|
|
22
|
-
open http://localhost:57374
|
|
20
|
+
# Open the Control Plane (starts `loki control serve` on 127.0.0.1:47821 if none is running)
|
|
21
|
+
loki dashboard
|
|
23
22
|
```
|
|
24
23
|
|
|
25
24
|
The dashboard automatically syncs with Loki Mode when it's running, polling `dashboard-state.json` every 2 seconds.
|
|
26
25
|
|
|
27
|
-
**Ports:**
|
|
26
|
+
**Ports:** the Control Plane serves the UI and `/v1/*` API on port **47821** by default. See [INSTALLATION.md](INSTALLATION.md#ports) for details.
|
|
28
27
|
|
|
29
28
|
**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
|
|
|
@@ -485,4 +484,4 @@ Useful for:
|
|
|
485
484
|
|
|
486
485
|
## Control Plane by default
|
|
487
486
|
|
|
488
|
-
Bare `loki` and `loki dashboard` (also `start` or `open` with no other flags) open the Control Plane. If `~/.loki/control/instance.json` names a live loopback server whose `/health` reports `service=loki-control`, that URL is reused; otherwise `loki control serve` is started detached and its PID is recorded in `~/.loki/control/serve.pid`. With `LOKI_HEADLESS=1`, `LOKI_NO_BROWSER=1` or `--no-open` the URL is printed and no browser is opened. Without bun, Loki prints one line naming bun and
|
|
487
|
+
Bare `loki` and `loki dashboard` (also `start` or `open` with no other flags) open the Control Plane. If `~/.loki/control/instance.json` names a live loopback server whose `/health` reports `service=loki-control`, that URL is reused; otherwise `loki control serve` is started detached and its PID is recorded in `~/.loki/control/serve.pid`. With `LOKI_HEADLESS=1`, `LOKI_NO_BROWSER=1` or `--no-open` the URL is printed and no browser is opened. Without bun, Loki prints one line naming bun and does not start a server (the classic dashboard is removed in 10.8). Multi-repo `loki workspace` is on by default; `LOKI_WORKSPACES=0` disables it.
|
|
@@ -82,13 +82,13 @@ context (the v9.22.13 bug: its body says "v9.24.0 is the next version on
|
|
|
82
82
|
npm") or over-carry on a stale npm read, so auto-detect was removed
|
|
83
83
|
entirely rather than patched again.
|
|
84
84
|
|
|
85
|
-
### 2. Build
|
|
85
|
+
### 2. Build Web App
|
|
86
86
|
|
|
87
87
|
```bash
|
|
88
|
-
cd
|
|
89
|
-
ls -la
|
|
88
|
+
cd web-app && npm ci && npm run build && cd ..
|
|
89
|
+
ls -la web-app/dist/index.html
|
|
90
90
|
```
|
|
91
|
-
`npm publish`'s `prepublishOnly` also triggers this build automatically.
|
|
91
|
+
`npm publish`'s `prepublishOnly` also triggers this build automatically. The legacy dashboard UI was removed; the browser UI is the Control Plane (`packages/control-plane`).
|
|
92
92
|
|
|
93
93
|
### 3. Run Tests
|
|
94
94
|
|
|
@@ -97,15 +97,13 @@ bash -n autonomy/run.sh
|
|
|
97
97
|
bash -n autonomy/loki
|
|
98
98
|
python3 -c "import ast, os; [ast.parse(open(f'dashboard/{f}').read()) for f in os.listdir('dashboard') if f.endswith('.py')]"
|
|
99
99
|
python3 -c "import json; json.load(open('package.json')); print('JSON OK')"
|
|
100
|
-
cd dashboard-ui && npx playwright test && cd .. # requires dashboard on 57374
|
|
101
100
|
```
|
|
102
101
|
|
|
103
102
|
### 3a. Pre-Publish Validation (MANDATORY)
|
|
104
103
|
|
|
105
104
|
```bash
|
|
106
|
-
npm pack --dry-run 2>&1 | grep -E "web-app/dist
|
|
105
|
+
npm pack --dry-run 2>&1 | grep -E "web-app/dist" || echo "FAIL: expected files missing"
|
|
107
106
|
git ls-files web-app/dist/index.html | grep -q . || echo "FAIL: web-app/dist/ not tracked"
|
|
108
|
-
git ls-files dashboard/static/index.html | grep -q . || echo "FAIL: dashboard/static/ not tracked"
|
|
109
107
|
npm pack && npm install -g ./loki-mode-*.tgz
|
|
110
108
|
loki --version
|
|
111
109
|
loki web --no-open &
|
|
@@ -135,7 +133,7 @@ Before pushing the release commit, run `bash scripts/release.sh --check-clean` (
|
|
|
135
133
|
```bash
|
|
136
134
|
gh run list --limit 1 && gh run watch <run-id>
|
|
137
135
|
npm view loki-mode version
|
|
138
|
-
npm pack loki-mode --dry-run 2>&1 | grep
|
|
136
|
+
npm pack loki-mode --dry-run 2>&1 | grep web-app/dist
|
|
139
137
|
docker pull asklokesh/loki-mode:X.Y.Z && docker run --rm asklokesh/loki-mode:X.Y.Z loki version
|
|
140
138
|
brew update && brew info loki-mode
|
|
141
139
|
gh release view vX.Y.Z
|
|
@@ -148,10 +146,10 @@ Operator action: wait for the Release workflow publish to land and for the D49 a
|
|
|
148
146
|
|
|
149
147
|
### Distribution Channel Checklist
|
|
150
148
|
|
|
151
|
-
| Channel | Dashboard API |
|
|
149
|
+
| Channel | Dashboard API | Web App | Memory System | Skills/References |
|
|
152
150
|
|---------|--------------------------|------------------------------|---------------|-------------------|
|
|
153
|
-
| npm | `dashboard/*.py` | `
|
|
154
|
-
| Docker | `COPY dashboard/` | Built in Dockerfile
|
|
151
|
+
| npm | `dashboard/*.py` | `web-app/dist/index.html` | `memory/` | `skills/`, `references/` |
|
|
152
|
+
| Docker | `COPY dashboard/` | Built in Dockerfile | `memory/` | `skills/`, `references/` |
|
|
155
153
|
| Homebrew| Full tarball | Full tarball | Full tarball | Full tarball |
|
|
156
154
|
| VSCode | DEPRECATED v7.2.0 -- no longer published | -- | -- | -- |
|
|
157
155
|
| Release | Skill-only zip | N/A | N/A | `references/` |
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Loki Mode Integration Cookbook
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and port 57374 are removed in Loki Mode 10.8; the UI is the Control Plane (`loki dashboard`, default port 47821). Examples below that use port 57374 or `/api/*` describe the legacy API server. See [control-plane-migration.md](../control-plane-migration.md) for the `/v1/*` mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
Step-by-step guides for connecting Loki Mode to external services. Each integration is opt-in and configured via environment variables.
|
|
4
6
|
|
|
5
7
|
---
|
|
@@ -226,7 +226,7 @@ npm install loki-mode-sdk
|
|
|
226
226
|
#### 5. Test Enterprise Features
|
|
227
227
|
|
|
228
228
|
```bash
|
|
229
|
-
#
|
|
229
|
+
# Open the Control Plane (the classic /api/* routes are replaced by /v1/*, see docs/control-plane-migration.md)
|
|
230
230
|
loki dashboard
|
|
231
231
|
|
|
232
232
|
# Test API
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Loki Mode Enterprise Performance Tuning
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and port 57374 are removed in Loki Mode 10.8; the UI is the Control Plane (`loki dashboard`, default port 47821). Examples below that use port 57374 or `/api/*` describe the legacy API server. See [control-plane-migration.md](../control-plane-migration.md) for the `/v1/*` mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
## Overview
|
|
4
6
|
|
|
5
7
|
Enterprise features are designed for minimal overhead. When disabled (no env vars set), every enterprise subsystem returns no-op responses with zero I/O. This guide covers tuning for production environments where enterprise features are actively used.
|
|
@@ -238,7 +240,7 @@ Rate limits are built into the API layer (10 requests/min on control endpoints,
|
|
|
238
240
|
|
|
239
241
|
### Static Asset Caching
|
|
240
242
|
|
|
241
|
-
The dashboard frontend (`
|
|
243
|
+
The dashboard frontend (`legacy-ui-static/index.html`) is a single-page application built as an IIFE bundle. Configure your reverse proxy to cache static assets:
|
|
242
244
|
|
|
243
245
|
```nginx
|
|
244
246
|
location /static/ {
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Loki Mode SDK Guide
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and port 57374 are removed in Loki Mode 10.8; the UI is the Control Plane (`loki dashboard`, default port 47821). Examples below that use port 57374 or `/api/*` describe the legacy API server. See [control-plane-migration.md](../control-plane-migration.md) for the `/v1/*` mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
Official Python and TypeScript SDKs for the Autonomi Control Plane API. Both SDKs have zero external dependencies -- they use only standard library features.
|
|
4
6
|
|
|
5
7
|
---
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Loki Mode Enterprise Security
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and port 57374 are removed in Loki Mode 10.8; the UI is the Control Plane (`loki dashboard`, default port 47821). Examples below that use port 57374 or `/api/*` describe the legacy API server. See [control-plane-migration.md](../control-plane-migration.md) for the `/v1/*` mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
## Overview
|
|
4
6
|
|
|
5
7
|
Loki Mode's security model follows a defense-in-depth approach. All security features are opt-in via environment variables, with sensible defaults that prioritize safety. When enterprise auth is not configured, the system operates in local-only mode with no network exposure.
|
|
@@ -43,7 +43,7 @@ Last updated: 2026-05-18
|
|
|
43
43
|
- [x] F-2.25 Semantic layer: buckets, functions, gateway routes surfaced
|
|
44
44
|
- [x] F-2.26 Council review hook (migrate_apply emits review records to .loki/quality/forge-migrations/; council read-side consumes from that path)
|
|
45
45
|
- [x] F-2.27 Dashboard router /api/forge/* (state, db, storage, functions, gateway)
|
|
46
|
-
- [~] F-2.28 Dashboard UI: deferred to dedicated
|
|
46
|
+
- [~] F-2.28 Dashboard UI: deferred to dedicated legacy-ui work (router is in place; UI panes are CSS/TSX work that will land in a separate PR)
|
|
47
47
|
- [x] F-2.29 CHANGELOG entry for F-2
|
|
48
48
|
- [x] F-2.30 Commit + push F-2
|
|
49
49
|
|
|
@@ -196,7 +196,7 @@ Last updated: 2026-05-18
|
|
|
196
196
|
## Status
|
|
197
197
|
|
|
198
198
|
Phase F-1..F-5 + X-11..X-26 + X-28..X-34 complete on
|
|
199
|
-
claude/compare-litellm-loki-Y8Ke1. Remaining: X-27 (
|
|
199
|
+
claude/compare-litellm-loki-Y8Ke1. Remaining: X-27 (legacy-ui).
|
|
200
200
|
|
|
201
201
|
## More tasks discovered (next wave)
|
|
202
202
|
|
|
@@ -56,7 +56,7 @@ Dockerizable and offline-safe. A daily/refresh fetch keeps the numbers current.
|
|
|
56
56
|
|
|
57
57
|
## Design language (Autonomi)
|
|
58
58
|
Match the shipped Autonomi look. Reference files: `artifacts/whitepaper/Autonomi-Whitepaper.html`
|
|
59
|
-
and `
|
|
59
|
+
and `legacy-ui-static/trust.html`. Palette: dark bg (#0F0B1A / #0d1117), Autonomi purple accent
|
|
60
60
|
(#553DE9 / #7B6BF0), verified teal (#2ED8B6 / #1AAF95), dim ink (#B8B0C8 / #8A857C), warning amber
|
|
61
61
|
(#C4922E), reject red (#C04848). Semantic status colors: verified=teal, reported/pending=amber,
|
|
62
62
|
mistake/reverted=red, roadmap=purple. Clean, calm, founder-readable; big numbers, short labels,
|
|
@@ -24,7 +24,7 @@ self-report taken as evidence.
|
|
|
24
24
|
| Doctor `--json` sentrux entry, parity bash + Bun | `autonomy/loki cmd_doctor_json` python emit (Dev4 `f7e95625` brought 15 lines) + `loki-ts/src/commands/doctor.ts:44 SentruxCheck`, `:54 sentrux: SentruxCheck` in DoctorJson, `:310 checkSentrux()` | VERIFIED |
|
|
25
25
|
| Byte-identical bash vs Bun parity | `tests/test-doctor-json-sentrux.sh` test 13 explicitly runs both routes through `jq -S` then `diff -q`. Test passed. local-ci bun-parity matrix also passed (21/21). | VERIFIED |
|
|
26
26
|
| `tests/test-doctor-json-sentrux.sh` 13/13 PASS | Reviewer + DA re-run: 13/13 | VERIFIED |
|
|
27
|
-
| Dashboard nav UAT -- Escalations sidebar component | `
|
|
27
|
+
| Dashboard nav UAT -- Escalations sidebar component | `legacy-ui/components/loki-escalations.js` (NEW, 280 lines), exported in `legacy-ui/index.js:99`, mounted in `legacy-ui/scripts/build-standalone.js:798` | VERIFIED |
|
|
28
28
|
| Web vs dashboard help clarification | `autonomy/loki cmd_dashboard_help` and `cmd_web_help` -- confirmed both contain "Note:" blocks cross-referencing the other command. R3 re-ran: 2 matches each. | VERIFIED |
|
|
29
29
|
| `tests/test-dashboard-nav-uat.sh` 13/13 PASS | DA re-run: 13/13 | VERIFIED |
|
|
30
30
|
| Pytest gate timeout via `_loki_run_pytest_with_timeout` helper | `autonomy/run.sh:5928` defines helper, called from `:6065` inside `enforce_test_coverage` | VERIFIED |
|
|
@@ -49,7 +49,7 @@ Note: The CHANGELOG body in v7.5.15 reads "20/20 PASS" for local-ci. That count
|
|
|
49
49
|
|
|
50
50
|
Scope gap -- `scripts/local-ci.sh` (4 lines, modified in v7.5.15): this script was changed but is not represented by a row in the table above. The change added one check (the dist rebuild probe). The diff is trivial but the omission is noted here for completeness.
|
|
51
51
|
|
|
52
|
-
Scope gap -- `
|
|
52
|
+
Scope gap -- `legacy-ui-static/index.html` (318 lines, build artifact): the table confirms the Escalations component was mounted in the build script. It does not confirm that the built artifact is internally consistent beyond that. A full artifact diff was not performed.
|
|
53
53
|
|
|
54
54
|
## 2. Per-agent claim audit
|
|
55
55
|
|
|
@@ -343,7 +343,7 @@ GIVEN the release workflow's publish-docker job runs
|
|
|
343
343
|
AND DOCKERHUB_USERNAME and DOCKERHUB_TOKEN secrets are configured
|
|
344
344
|
WHEN the job builds the Docker image
|
|
345
345
|
THEN dashboard frontend is rebuilt first (npm ci && npm run build:all)
|
|
346
|
-
AND
|
|
346
|
+
AND legacy-ui-static/index.html existence is verified
|
|
347
347
|
AND the image is pushed with three tags:
|
|
348
348
|
- asklokesh/loki-mode:v<VERSION>
|
|
349
349
|
- asklokesh/loki-mode:<VERSION>
|
|
@@ -410,7 +410,7 @@ Source: `deploy/helm/autonomi/templates/secret.yaml:1` (conditional on existingS
|
|
|
410
410
|
GIVEN the test.yml workflow has dashboard-build job
|
|
411
411
|
AND it uses actions/setup-node with cache: npm
|
|
412
412
|
WHEN the job runs
|
|
413
|
-
THEN npm dependencies are cached via cache-dependency-path:
|
|
413
|
+
THEN npm dependencies are cached via cache-dependency-path: legacy-ui/package-lock.json
|
|
414
414
|
AND subsequent runs skip "npm ci" download phase
|
|
415
415
|
AND build verification checks output size > 100KB
|
|
416
416
|
```
|