loki-mode 10.5.17 → 10.5.20
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 +877 -30
- package/SKILL.md +3 -3
- package/VERSION +1 -1
- package/autonomy/lib/proof-generator.py +251 -0
- package/autonomy/lib/proof-verify.py +1 -0
- package/autonomy/loki +52 -6
- package/autonomy/run.sh +35 -5
- package/autonomy/verify.sh +1 -1
- package/dashboard/__init__.py +1 -1
- package/dashboard/api_start.py +463 -0
- package/dashboard/server.py +31 -0
- package/dashboard/static/start.html +100 -0
- package/docs/COMPARISON.md +6 -19
- package/docs/COMPETITIVE-ANALYSIS.md +6 -41
- package/docs/CRASH-REPORTING-PLAN.md +1 -1
- package/docs/ENTERPRISE-IDENTITY-ROADMAP.md +1 -1
- package/docs/INSTALLATION.md +1 -1
- package/docs/PRIVACY.md +1 -1
- package/docs/R8-SHAREABLE-TEAM-ASSETS-PLAN.md +1 -1
- package/docs/WANG-PRINCIPLES-PLAN.md +1 -1
- package/docs/architecture/STATE-MACHINES.md +18 -27
- package/docs/architecture/bmad-integration-validation.md +2 -2
- package/docs/audit-logging.md +12 -86
- package/docs/authentication.md +4 -4
- package/docs/authorization.md +15 -47
- package/docs/auto-claude-comparison.md +1 -33
- package/docs/certification/01-core-concepts/lab.md +3 -3
- package/docs/certification/01-core-concepts/lesson.md +11 -22
- package/docs/certification/01-core-concepts/quiz.md +7 -7
- package/docs/certification/02-enterprise-features/lab.md +0 -2
- package/docs/certification/02-enterprise-features/lesson.md +0 -10
- package/docs/certification/04-production-deployment/lab.md +1 -1
- package/docs/certification/05-troubleshooting/lab.md +2 -2
- package/docs/certification/README.md +1 -1
- package/docs/certification/answer-key.md +37 -20
- package/docs/certification/certification-exam.md +7 -7
- package/docs/competitive/emergence-others-analysis.md +3 -3
- package/docs/competitive/replit-lovable-analysis.md +2 -2
- package/docs/cursor-comparison.md +2 -2
- package/docs/dashboard-guide.md +14 -2
- package/docs/dev/architecture-reference.md +2 -2
- package/docs/dev/project-structure.md +1 -1
- package/docs/enterprise/architecture.md +11 -8
- package/docs/enterprise/integration-cookbook.md +23 -14
- package/docs/enterprise/migration.md +5 -9
- package/docs/enterprise/performance.md +3 -6
- package/docs/enterprise/sdk-guide.md +1 -1
- package/docs/enterprise/security.md +8 -17
- package/docs/exit-codes.md +14 -0
- package/docs/git-workflow.md +4 -62
- package/docs/network-security.md +3 -13
- package/docs/plans/ULTRAPLAN-FORGE-BAAS.md +1 -1
- package/docs/prd-purple-lab-platform-v2.md +1 -1
- package/docs/prd-purple-lab-platform.md +1 -3
- package/docs/research-2026-07/GAP-ANALYSIS-BACKLOG.md +1 -1
- package/docs/show-hn-post.md +3 -4
- package/docs/siem-integration.md +8 -10
- package/docs/test-scenarios/edge-cases.md +2 -2
- package/docs/test-scenarios/enterprise-scenarios.md +4 -4
- package/docs/v10/BOARD.md +7 -5
- package/docs/v10/GUIDE.md +5 -3
- package/docs/v10/METRICS.md +36 -0
- package/docs/v10/PROGRESS.md +42 -0
- package/docs/walkthrough/README.md +1 -7
- package/loki-ts/dist/loki.js +370 -370
- package/mcp/__init__.py +1 -1
- package/package.json +1 -1
- package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
- package/web-app/dist/assets/{AdminPage-DxGZSpFg.js → AdminPage-HjtApbcL.js} +1 -1
- package/web-app/dist/assets/{Avatar-BZEp23D8.js → Avatar-BcwLENsU.js} +1 -1
- package/web-app/dist/assets/{Badge-DnDwqDLu.js → Badge-DjJhHJj0.js} +1 -1
- package/web-app/dist/assets/{Button-C9KDP4c1.js → Button-CSMstrCz.js} +1 -1
- package/web-app/dist/assets/{CockpitPage-DRlh3LV2.js → CockpitPage-BHihN-aq.js} +1 -1
- package/web-app/dist/assets/{ComparePage-C_gE45dQ.js → ComparePage-_6JtexDp.js} +1 -1
- package/web-app/dist/assets/{ErrorBoundary-CL-J9-Cs.js → ErrorBoundary-Cx2fnw3q.js} +1 -1
- package/web-app/dist/assets/{EvidenceReceiptPanel-DABd176Y.js → EvidenceReceiptPanel-DcUQAnju.js} +1 -1
- package/web-app/dist/assets/{GitHubIssuesPanel-C4lYbm6O.js → GitHubIssuesPanel-1dYpQ5Rx.js} +1 -1
- package/web-app/dist/assets/{GitHubPRsPanel-CgiUixwo.js → GitHubPRsPanel-BPdDD1kX.js} +1 -1
- package/web-app/dist/assets/{HomePage-DC99RIrz.js → HomePage-JfmwLGnQ.js} +2 -2
- package/web-app/dist/assets/{LoginPage-Bd72QWNk.js → LoginPage-7SnMHzPc.js} +1 -1
- package/web-app/dist/assets/{MagicPage-CBouFs2K.js → MagicPage-C0IkoOzD.js} +1 -1
- package/web-app/dist/assets/{MetricsPage-c9MyDcBp.js → MetricsPage-BJOZ0L3F.js} +1 -1
- package/web-app/dist/assets/{NotFoundPage-ZPhiebiW.js → NotFoundPage-S49UjLyW.js} +1 -1
- package/web-app/dist/assets/{ProjectPage-DKwrALUb.js → ProjectPage-Dj_nv2kT.js} +3 -3
- package/web-app/dist/assets/{ProjectsPage-X1uZKZC_.js → ProjectsPage-C7thLjOm.js} +1 -1
- package/web-app/dist/assets/{SettingsPage-CiZKZRto.js → SettingsPage-DEcJyfsU.js} +1 -1
- package/web-app/dist/assets/{ShowcasePage-k_imKfeh.js → ShowcasePage-B5PshXNg.js} +1 -1
- package/web-app/dist/assets/{SystemSettingsPage-Wx9ESLll.js → SystemSettingsPage-Cnp4BkN7.js} +1 -1
- package/web-app/dist/assets/{TeamsPage-B7upn-I7.js → TeamsPage-1ImpgMzs.js} +1 -1
- package/web-app/dist/assets/{TemplatesPage-oJf_VKgh.js → TemplatesPage-BOYKrPX8.js} +1 -1
- package/web-app/dist/assets/{TerminalOutput-BdfPlgLI.js → TerminalOutput-LPxzwfwm.js} +1 -1
- package/web-app/dist/assets/{activity-BcZTsgWH.js → activity-Hl7iDpX_.js} +1 -1
- package/web-app/dist/assets/{bell-JNEkjWQ2.js → bell-DrBfjAq4.js} +1 -1
- package/web-app/dist/assets/{bot-DMAJobP_.js → bot-6SoklKaZ.js} +1 -1
- package/web-app/dist/assets/{check-DPTry-z2.js → check-DhHuZH8k.js} +1 -1
- package/web-app/dist/assets/{chevron-left-DSqOEtTV.js → chevron-left-BUERGaLO.js} +1 -1
- package/web-app/dist/assets/{circle-alert-BbL8Vysv.js → circle-alert-D7UOw5bc.js} +1 -1
- package/web-app/dist/assets/{clock-BHEr5lGW.js → clock-t3v_i7fP.js} +1 -1
- package/web-app/dist/assets/{cloud-C48PunYo.js → cloud-CP3eLZts.js} +1 -1
- package/web-app/dist/assets/{code-xml-Boa7kRqT.js → code-xml-DU-CmwVx.js} +1 -1
- package/web-app/dist/assets/{database-Eu35Gv7z.js → database-J27fE_Ot.js} +1 -1
- package/web-app/dist/assets/{dollar-sign-BO9fCnHW.js → dollar-sign-BdU_HR9C.js} +1 -1
- package/web-app/dist/assets/{file-code-corner-DHsSDIL_.js → file-code-corner-Cu4A1aIH.js} +1 -1
- package/web-app/dist/assets/{file-plus-BYiQLe5l.js → file-plus-BTli76r5.js} +1 -1
- package/web-app/dist/assets/{globe-BPZ5sQI2.js → globe-Bz3m1c_-.js} +1 -1
- package/web-app/dist/assets/{hammer-DlOLTsH3.js → hammer-HNN6jr92.js} +1 -1
- package/web-app/dist/assets/{index-BrgkuqSA.js → index-CgK4xqUy.js} +3 -3
- package/web-app/dist/assets/{layers-DMNdn1GR.js → layers-DhuXUuM6.js} +1 -1
- package/web-app/dist/assets/{loader-circle-_e9fypHL.js → loader-circle-CeBjdh2y.js} +1 -1
- package/web-app/dist/assets/{lock-D_elxMZb.js → lock-DjSqmIVZ.js} +1 -1
- package/web-app/dist/assets/{package-Bw-7g3JI.js → package-NL0AdpIi.js} +1 -1
- package/web-app/dist/assets/{plus-CZeq0pgJ.js → plus-Lbz3hom-.js} +1 -1
- package/web-app/dist/assets/{refresh-cw-D0WMyffs.js → refresh-cw-uKARwuER.js} +1 -1
- package/web-app/dist/assets/{rotate-ccw-CcKyNwXG.js → rotate-ccw-ByA6XJq1.js} +1 -1
- package/web-app/dist/assets/{scroll-text-C0L9Vqpm.js → scroll-text-BV8Blxig.js} +1 -1
- package/web-app/dist/assets/{server-SgwFv6cd.js → server-Cy3R5hde.js} +1 -1
- package/web-app/dist/assets/{shield-alert-D1tESlfI.js → shield-alert-rE_xXx7r.js} +1 -1
- package/web-app/dist/assets/{thumbs-up-bUtUA15O.js → thumbs-up-CNMITZHD.js} +1 -1
- package/web-app/dist/assets/{trash-2-C9Nv1kKk.js → trash-2-BP3Rr5SU.js} +1 -1
- package/web-app/dist/assets/{trending-down-Bh107AJe.js → trending-down-BE_8lCjD.js} +1 -1
- package/web-app/dist/assets/{trending-up-25BqhLVq.js → trending-up-CF6E9-9a.js} +1 -1
- package/web-app/dist/assets/{upload-DDYtMbN5.js → upload-D-Ui4N6K.js} +1 -1
- package/web-app/dist/assets/{usePolling-BSDT0il_.js → usePolling-DIVX97OV.js} +1 -1
- package/web-app/dist/assets/{user-CKpUEUhK.js → user-7rTiTfDj.js} +1 -1
- package/web-app/dist/index.html +1 -1
- package/docs/README-FULL.md +0 -977
package/docs/COMPARISON.md
CHANGED
|
@@ -132,19 +132,6 @@
|
|
|
132
132
|
|
|
133
133
|
---
|
|
134
134
|
|
|
135
|
-
## Benchmarks (SWE-bench Verified)
|
|
136
|
-
|
|
137
|
-
| Agent | Score | Notes |
|
|
138
|
-
|-------|-------|-------|
|
|
139
|
-
| **Google Antigravity** | 76.2% | With Gemini 3 Pro |
|
|
140
|
-
| **Claude Code** | ~75%+ | Claude Sonnet 4.5 |
|
|
141
|
-
| **OpenAI Codex** | ~70%+ | GPT-5.2-Codex |
|
|
142
|
-
| **Devin 2.0** | 67% | PR merge rate doubled |
|
|
143
|
-
| **Amazon Q Developer** | 66% | State-of-the-art claim |
|
|
144
|
-
| **Loki Mode** | Inherits Claude | Framework, not model |
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
135
|
## Zencoder/Zenflow Comparison (v2.36.7)
|
|
149
136
|
|
|
150
137
|
**Comprehensive analysis of Zencoder.ai enterprise AI coding platform, including Zenflow (autonomous workflows), Zen Agents (specialized agents), and Zentester (QA automation).**
|
|
@@ -210,7 +197,7 @@
|
|
|
210
197
|
|---------|--------------|---------|-----------------|------------|-----------------|---------------------|----------------|
|
|
211
198
|
| **Stars** | 594 | 11,903 | 35K+ | 26K+ | 13.7K | N/A | N/A |
|
|
212
199
|
| **npm/wk** | 6.1K | 21.4K | N/A | N/A | N/A | N/A | N/A |
|
|
213
|
-
| **Agents** |
|
|
200
|
+
| **Agents** | Role prompts per domain | 11 agents | Fresh per task | 108 agents | Swarm-based | 32 agents | N/A |
|
|
214
201
|
| **Skills** | Progressive disclosure | 6 slash commands | N/A | 129 skills | N/A | 35 skills | Memory focus |
|
|
215
202
|
| **Multi-Provider** | Yes (Claude/Cline/Codex/Aider/opencode) | 3 CLIs (separate) | No | No | No | No | No |
|
|
216
203
|
| **Memory System** | 3-tier (episodic/semantic/procedural) | None | N/A | N/A | Hybrid | N/A | SQLite+FTS5 |
|
|
@@ -265,7 +252,7 @@ Plugin marketplace architecture with unprecedented scale:
|
|
|
265
252
|
| Pattern | Description | Loki Mode Status |
|
|
266
253
|
|---------|-------------|------------------|
|
|
267
254
|
| **72 Plugins** | Modular, focused plugins instead of monolith | Different approach (progressive disclosure) |
|
|
268
|
-
| **108 Agents** | Specialized agents for specific domains |
|
|
255
|
+
| **108 Agents** | Specialized agents for specific domains | Specialized agent roles in Loki Mode |
|
|
269
256
|
| **129 Skills** | Skills as first-class objects | 10 skills in skills/ |
|
|
270
257
|
| **Four-Tier Model Strategy** | Explicit tier selection with constraints | Similar to Loki Mode tiers |
|
|
271
258
|
|
|
@@ -286,7 +273,7 @@ Tiered agent architecture with explicit escalation:
|
|
|
286
273
|
|
|
287
274
|
| Pattern | Description | Loki Mode Status |
|
|
288
275
|
|---------|-------------|------------------|
|
|
289
|
-
| **32 Agents** | Smaller but well-organized agent set |
|
|
276
|
+
| **32 Agents** | Smaller but well-organized agent set | Specialized roles in Loki Mode |
|
|
290
277
|
| **35 Skills** | Domain-specific skills | 10 skills in Loki Mode |
|
|
291
278
|
| **Tiered Architecture** | LOW/MEDIUM/HIGH with explicit triggers | **IMPLEMENTED** (model-selection.md lines 180-363) |
|
|
292
279
|
| **Delegation Enforcer** | Middleware auto-injects correct model | Evaluating |
|
|
@@ -349,13 +336,13 @@ Tiered agent architecture with explicit escalation:
|
|
|
349
336
|
|
|
350
337
|
| Agent | Killer Feature |
|
|
351
338
|
|-------|---------------|
|
|
352
|
-
| **Loki Mode** | Minimal-human-intervention full SDLC from any spec (PRD, GitHub issue, or YAML),
|
|
339
|
+
| **Loki Mode** | Minimal-human-intervention full SDLC from any spec (PRD, GitHub issue, or YAML), specialized agent roles, Constitutional AI, anti-sycophancy, cross-project learning, code transformation, property-based testing |
|
|
353
340
|
| **Devin** | Full software engineer persona, Slack integration, 67% PR merge rate |
|
|
354
341
|
| **OpenAI Codex** | Skills marketplace, $skill-creator, GPT-5.2-Codex, secure sandbox |
|
|
355
342
|
| **Cursor** | 8 parallel agents, BugBot, Memories, $10B valuation, Composer model (250 tok/s) |
|
|
356
343
|
| **Kiro** | Spec-driven development (requirements.md/design.md/tasks.md), Property-based testing, Hooks |
|
|
357
|
-
| **Antigravity** | Manager Surface, Artifacts system (video), browser subagents, Gemini 3
|
|
358
|
-
| **Amazon Q** | Code transformation (/transform),
|
|
344
|
+
| **Antigravity** | Manager Surface, Artifacts system (video), browser subagents, Gemini 3 |
|
|
345
|
+
| **Amazon Q** | Code transformation (/transform), deep AWS integration, MCP support |
|
|
359
346
|
| **OpenCode** | 70.9k stars, multi-provider, LSP integration (25+ languages), plugin system |
|
|
360
347
|
|
|
361
348
|
---
|
|
@@ -16,7 +16,7 @@ GSD is the closest competitor -- a context engineering system that spawns fresh
|
|
|
16
16
|
|
|
17
17
|
| Dimension | Loki Mode | GSD | Winner |
|
|
18
18
|
|-----------|-----------|-----|--------|
|
|
19
|
-
| Feature depth | Deep (memory, council, dashboard, events,
|
|
19
|
+
| Feature depth | Deep (memory, council, dashboard, events, agent roles) | Shallow (6 commands, 11 agents, markdown state) | Loki |
|
|
20
20
|
| Adoption | 594 stars, 6K/wk npm | 11,903 stars, 21K/wk npm | GSD (20x) |
|
|
21
21
|
| Simplicity | Complex (5.4K-line run.sh, 12 Python modules) | Simple (markdown agents + slash commands) | GSD |
|
|
22
22
|
| Full autonomy | Walk away, come back to deployed product | Human checkpoints at discuss/verify/milestone | Loki |
|
|
@@ -36,12 +36,11 @@ GSD is the closest competitor -- a context engineering system that spawns fresh
|
|
|
36
36
|
| Feature | Loki Mode | Claude-Flow | MetaGPT | CrewAI | Cursor Agent | Devin |
|
|
37
37
|
|---------|-----------|-------------|---------|--------|--------------|-------|
|
|
38
38
|
| **GitHub Stars** | 594 | 13,700 | 62,400 | 25,000+ | N/A (Commercial) | N/A (Commercial) |
|
|
39
|
-
| **Agent Count** | 41 types | 64+ agents | 5 roles | Unlimited | 8 parallel | 1 autonomous |
|
|
40
39
|
| **Parallel Execution** | Yes (multi-agent) | Yes (swarms) | Sequential | Yes (crews) | Yes (8 worktrees) | Yes (fleet) |
|
|
41
|
-
| **Published Benchmarks** |
|
|
40
|
+
| **Published Benchmarks** | None | None | 85.9-87.7% HumanEval | None | ~250 tok/s | 15% complex tasks |
|
|
42
41
|
| **SWE-bench Score** | Not measured (patch generation harness exists; official evaluator not run, so no resolve rate exists) | Unknown | Unknown | Unknown | Unknown | 15% complex |
|
|
43
42
|
| **Full SDLC** | Yes (8 phases) | Yes | Partial | Partial | No | Partial |
|
|
44
|
-
| **Business Ops** | **Yes
|
|
43
|
+
| **Business Ops** | **Yes** | No | No | No | No | No |
|
|
45
44
|
| **Enterprise Security** | `--dangerously-skip-permissions` | MCP sandboxed | Sandboxed | Audit logs, RBAC | Staged autonomy | Sandboxed |
|
|
46
45
|
| **Cross-Project Learning** | No | AgentDB | No | No | No | Limited |
|
|
47
46
|
| **Observability** | Dashboard + STATUS.txt | Real-time tracing | Logs | Full tracing | Built-in | Full |
|
|
@@ -175,43 +174,10 @@ GSD is the closest competitor -- a context engineering system that spawns fresh
|
|
|
175
174
|
|
|
176
175
|
---
|
|
177
176
|
|
|
178
|
-
## Benchmark Results
|
|
177
|
+
## Benchmark Results
|
|
179
178
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
**Loki Mode Multi-Agent (with RARV):**
|
|
183
|
-
|
|
184
|
-
| Metric | Value |
|
|
185
|
-
|--------|-------|
|
|
186
|
-
| **Pass@1** | **98.78%** |
|
|
187
|
-
| Passed | 162/164 problems |
|
|
188
|
-
| Failed | 2 problems (HumanEval/32, HumanEval/50) |
|
|
189
|
-
| RARV Recoveries | 2 (HumanEval/38, HumanEval/132) |
|
|
190
|
-
| Avg Attempts | 1.04 |
|
|
191
|
-
| Model | Claude Opus 4.5 |
|
|
192
|
-
| Time | 45.1 minutes |
|
|
193
|
-
|
|
194
|
-
**Direct Claude (Single Agent Baseline):**
|
|
195
|
-
|
|
196
|
-
| Metric | Value |
|
|
197
|
-
|--------|-------|
|
|
198
|
-
| **Pass@1** | **98.17%** |
|
|
199
|
-
| Passed | 161/164 problems |
|
|
200
|
-
| Failed | 3 problems |
|
|
201
|
-
| Model | Claude Opus 4.5 |
|
|
202
|
-
| Time | 21.1 minutes |
|
|
203
|
-
|
|
204
|
-
**Three-Way Comparison:**
|
|
205
|
-
|
|
206
|
-
| System | HumanEval Pass@1 | Agent Type |
|
|
207
|
-
|--------|------------------|------------|
|
|
208
|
-
| **Loki Mode (multi-agent)** | **98.78%** | Architect->Engineer->QA->Reviewer |
|
|
209
|
-
| Direct Claude | 98.17% | Single agent |
|
|
210
|
-
| MetaGPT | 85.9-87.7% | Multi-agent (5 roles) |
|
|
211
|
-
|
|
212
|
-
**Key Finding:** RARV cycle recovered 2 problems that failed on first attempt, demonstrating the value of self-verification loops.
|
|
213
|
-
|
|
214
|
-
**Failed Problems (after RARV):** HumanEval/32, HumanEval/50
|
|
179
|
+
No benchmark result is published. A self-reported HumanEval run from
|
|
180
|
+
2026-01-05 is withdrawn as a headline figure.
|
|
215
181
|
|
|
216
182
|
### SWE-bench Lite: Honest Status
|
|
217
183
|
|
|
@@ -233,7 +199,6 @@ resolve rate is not yet measured." Nothing stronger.
|
|
|
233
199
|
## Critical Gaps to Address
|
|
234
200
|
|
|
235
201
|
### Priority 1: Benchmarks (PARTIAL)
|
|
236
|
-
- **Real:** 98.78% HumanEval Pass@1 with RARV (162/164, reproducible harness; 98.17% single-agent baseline)
|
|
237
202
|
- **NOT real:** SWE-bench. Patch generation ran (299/300 diffs produced); the official
|
|
238
203
|
evaluator never ran, so there is NO resolve rate and no comparable score.
|
|
239
204
|
- **Next:** run a contamination-resistant evaluator end-to-end (or publish nothing for SWE-bench)
|
|
@@ -494,7 +494,7 @@ Guards that prevent a bad auto-fix from shipping:
|
|
|
494
494
|
| Backend abuse / spam | Unauthenticated-but-rate-limited (per IP + project_id_hash), body-size cap, whitelist-schema validation, 202-always (no oracle), occurrence counter collapses floods into one issue. |
|
|
495
495
|
| Auto-fix ships a regression | local-ci gate (42/42 + bun-parity) BEFORE PR; unanimous council; NO auto-merge; one PR per fingerprint; human merge gate per CLAUDE.md. |
|
|
496
496
|
| GitHub token exfiltration | Token only on backend (7c/7e); clients carry no write secret; only a public anon ingest key at most. |
|
|
497
|
-
|
|
|
497
|
+
| Personal data | Anonymous-by-design (no PII in whitelist; emails/IPs denied); disclosed default-on with friction-free persistent opt-out (LOKI_TELEMETRY=off, loki telemetry off, DO_NOT_TRACK=1); project_id_hash is non-reversible; PRIVACY.md documents data categories, retention, opt-out, and deletion-by-fingerprint on request. Default-on is defensible only WITH the disclosure; covert would not be. |
|
|
498
498
|
| Dual-route parity burden | Single shared Python scrubber called by both routes (5a) eliminates redaction drift; bun-parity matrix entries for `loki crash` (local-ci.sh:250); commands ported in both `autonomy/loki` and `loki-ts/src/commands/`. |
|
|
499
499
|
| Over-reporting normal operation | Conservative capture: only uncaught/ nonzero-exit/provider-failure/explicit friction signals (retry loop, rate-limit loop, gate failure), not routine retries; thresholds before friction fires. |
|
|
500
500
|
| python3 absence breaks capture | Fail closed: local write only if scrub ran, never egress without scrub (5b). |
|
|
@@ -155,7 +155,7 @@ effort estimate, and the IdP or test infrastructure required.
|
|
|
155
155
|
### SOC2
|
|
156
156
|
|
|
157
157
|
- Scope: SOC2 is a compliance PROGRAM, not a code feature. It spans durable,
|
|
158
|
-
|
|
158
|
+
integrity-protected audit logging with retention and SIEM export, access reviews,
|
|
159
159
|
change-management process, vendor management, security policies, and a Type
|
|
160
160
|
II observation window (commonly 6 to 12 months of evidence collected under
|
|
161
161
|
an auditor).
|
package/docs/INSTALLATION.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
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.5.
|
|
5
|
+
**Version:** v10.5.20
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
package/docs/PRIVACY.md
CHANGED
|
@@ -21,7 +21,7 @@ match the code, the code is the bug; please open an issue.
|
|
|
21
21
|
CONTINUOUS_INTEGRATION), an enterprise/air-gapped marker
|
|
22
22
|
(LOKI_ENTERPRISE=true / LOKI_AIRGAP=true), or a non-interactive session (no
|
|
23
23
|
TTY: scripts, pipes, cron, detached/container runs). In those contexts an
|
|
24
|
-
untouched install sends us nothing.
|
|
24
|
+
untouched install sends us nothing.
|
|
25
25
|
- Disclosure is never covert: the first-run welcome screen states (once) that
|
|
26
26
|
anonymous diagnostics are on and how to turn them off, and this document is the
|
|
27
27
|
canonical reference.
|
|
@@ -17,7 +17,7 @@ was read in full. Findings:
|
|
|
17
17
|
| `cmd_share` | `autonomy/loki:25147` | Uploads a session REPORT as a GitHub gist. | Not applicable (report, not assets). |
|
|
18
18
|
| `cmd_memory` | `autonomy/loki:14475` | Lists/show cross-project learnings in `~/.loki/learnings/*.jsonl`. No tarball export. | Same source dir reused as an asset category. |
|
|
19
19
|
| `proof_redact.py` | `autonomy/lib/proof_redact.py` | Single redaction chokepoint (R1). `redact_tree(obj)`, `redact_value(s)`, `set_context()`, `RULES_VERSION`. | REUSED as-is. No second redactor written. |
|
|
20
|
-
| agent registry | `agents/types.json` |
|
|
20
|
+
| agent registry | `agents/types.json` | Shipped agent types. `cmd_agent` (`autonomy/loki:19509`) reads it from the install dir. | Bundled as the `agents` category. |
|
|
21
21
|
| PRD templates | `templates/*.md` | 21 templates; read from `$SKILL_DIR/templates` at runtime (`autonomy/loki:9781`, `8840`). | Bundled as `templates`. |
|
|
22
22
|
| council config | `<project>/.loki/council/*.json` | `config.json` / `state.json` (`autonomy/loki:16688`, `autonomy/run.sh:3643`). | Bundled as `council`. |
|
|
23
23
|
| project memory | `<project>/.loki/memory/{episodic,semantic,skills,...}` (`autonomy/run.sh:3183`) | Per-project episodic/semantic/procedural memory. | Bundled as `memory`. |
|
|
@@ -53,7 +53,7 @@ Measured on this machine, not asserted.
|
|
|
53
53
|
| **1 Systems Thinking** | STRONG | 8 quality gates, RARV-C loop, council, Evidence Receipt, dual-route parity enforced by test |
|
|
54
54
|
| **2 Speed** | MEASURED, UNOPTIMISED | agent call = **980s = 96%** of iteration; all gates together = 44s |
|
|
55
55
|
| **3 Reliability** | STRONG, newly so | 73 mutation-proven trust invariants; four gates were shipping broken until v8.38.0 |
|
|
56
|
-
| **4 Extensibility** | STRONG |
|
|
56
|
+
| **4 Extensibility** | STRONG | 5 providers, agent type registry, MCP (36 tools), plugin marketplace |
|
|
57
57
|
| **5 Feedback Loops / Evals** | **BROKEN** | `cost_usd == 0` on **3 of 5** efficiency records; no eval score for our own harness |
|
|
58
58
|
|
|
59
59
|
**Principle 5 is the gap, and it is the one Wang weights highest.** He states the
|
|
@@ -12,8 +12,8 @@ triggers and persistence, and source file references (file:line).
|
|
|
12
12
|
|
|
13
13
|
**Last verified:** 2026-03-03 against v6.6.1 codebase (council-reviewed, merged via PR #49).
|
|
14
14
|
|
|
15
|
-
**
|
|
16
|
-
end-to-end
|
|
15
|
+
**Last partial review:** v7.5.7 (2026-04-29). This document has NOT been re-verified
|
|
16
|
+
end-to-end since then. Treat shape/semantics as authoritative; treat line
|
|
17
17
|
numbers as approximate. See "Known drift" and "Known additions" sections below
|
|
18
18
|
before relying on any specific `file:line` reference.
|
|
19
19
|
|
|
@@ -520,25 +520,26 @@ Required provider variables (`loader.sh:65-83`):
|
|
|
520
520
|
| PROVIDER_HAS_PARALLEL | `"true"` |
|
|
521
521
|
| PROVIDER_DEGRADED | `"false"` |
|
|
522
522
|
|
|
523
|
-
Supported providers: `claude`, `codex`, `
|
|
523
|
+
Supported providers: `claude`, `codex`, `cline`, `aider`, `opencode` (Gemini was removed in v7.5.18)
|
|
524
524
|
|
|
525
525
|
### 4.2 Model Tier Selection
|
|
526
526
|
|
|
527
527
|
Each provider maps the 3 RARV tiers to provider-specific model settings via
|
|
528
528
|
`provider_get_tier_param()`.
|
|
529
529
|
|
|
530
|
-
Source: `providers/claude.sh
|
|
531
|
-
`providers/
|
|
530
|
+
Source: `providers/claude.sh`, `providers/codex.sh`, `providers/cline.sh`,
|
|
531
|
+
`providers/aider.sh`, `providers/opencode.sh`
|
|
532
532
|
|
|
533
533
|
```
|
|
534
|
-
RARV Tier Claude (model) Codex (effort)
|
|
535
|
-
--------- -------------- --------------
|
|
536
|
-
planning opus xhigh
|
|
537
|
-
development opus (upgraded) high
|
|
538
|
-
fast sonnet (upgraded) low
|
|
534
|
+
RARV Tier Claude (model) Codex (effort) Cline Aider opencode
|
|
535
|
+
--------- -------------- -------------- ----- ----- --------
|
|
536
|
+
planning opus xhigh single model* single model** per-tier model***
|
|
537
|
+
development opus (upgraded) high single model* single model** per-tier model***
|
|
538
|
+
fast sonnet (upgraded) low single model* single model** per-tier model***
|
|
539
539
|
|
|
540
540
|
* Cline: returns LOKI_CLINE_MODEL (default: "default"), single externally-configured model
|
|
541
541
|
** Aider: returns LOKI_AIDER_MODEL (default: "claude-3.7-sonnet"), single externally-configured model
|
|
542
|
+
*** opencode: PROVIDER_MODEL_PLANNING / _DEVELOPMENT / _FAST, one model unless overridden per tier
|
|
542
543
|
|
|
543
544
|
Note: Claude default tier mapping upgrades development->opus and fast->sonnet.
|
|
544
545
|
With LOKI_ALLOW_HAIKU=true: planning=opus, development=sonnet, fast=haiku (original mapping).
|
|
@@ -546,8 +547,8 @@ Source: `providers/claude.sh:101`, `providers/codex.sh:106`, `providers/gemini.s
|
|
|
546
547
|
|
|
547
548
|
### 4.3 Degradation States
|
|
548
549
|
|
|
549
|
-
Source: `providers/claude.sh`, `providers/codex.sh`, `providers/
|
|
550
|
-
`providers/
|
|
550
|
+
Source: `providers/claude.sh`, `providers/codex.sh`, `providers/cline.sh`,
|
|
551
|
+
`providers/aider.sh`, `providers/opencode.sh`
|
|
551
552
|
|
|
552
553
|
```
|
|
553
554
|
Tier 1: Full Tier 2: Partial Tier 3: Degraded
|
|
@@ -560,15 +561,6 @@ Source: `providers/claude.sh`, `providers/codex.sh`, `providers/gemini.sh`,
|
|
|
560
561
|
| - -p flag prompt | | - Single model | | - Positional prompt|
|
|
561
562
|
+------------------+ +-------------------+ +-------------------+
|
|
562
563
|
|
|
563
|
-
+-------------------+
|
|
564
|
-
| Gemini |
|
|
565
|
-
| (Degraded) |
|
|
566
|
-
| - Sequential only |
|
|
567
|
-
| - No MCP |
|
|
568
|
-
| - No subagents |
|
|
569
|
-
| - Positional prompt|
|
|
570
|
-
+-------------------+
|
|
571
|
-
|
|
572
564
|
+-------------------+
|
|
573
565
|
| Aider |
|
|
574
566
|
| (Degraded) |
|
|
@@ -586,7 +578,7 @@ Provider capability matrix:
|
|
|
586
578
|
| Claude | true | true | true| false |
|
|
587
579
|
| Cline | true | false | true| false |
|
|
588
580
|
| Codex | false | false | true| true |
|
|
589
|
-
|
|
|
581
|
+
| opencode | false | false | true| false |
|
|
590
582
|
| Aider | false | false | false| true |
|
|
591
583
|
|
|
592
584
|
When `PROVIDER_DEGRADED=true`:
|
|
@@ -1211,7 +1203,7 @@ Written atomically every 2 seconds by `run.sh` to `.loki/dashboard-state.json`.
|
|
|
1211
1203
|
"iteration": 0,
|
|
1212
1204
|
"complexity": "simple|standard|complex",
|
|
1213
1205
|
"mode": "autonomous|interactive",
|
|
1214
|
-
"provider": "claude|codex|
|
|
1206
|
+
"provider": "claude|codex|cline|aider|opencode",
|
|
1215
1207
|
"current_task": "...",
|
|
1216
1208
|
"budget": {"limit": 0.0, "used": 0.0, "remaining": 0.0},
|
|
1217
1209
|
"qualityGates": {"gate_name": {"status": "passed|failed"}}
|
|
@@ -1514,7 +1506,7 @@ Source: `autonomy/context-tracker.py`
|
|
|
1514
1506
|
v
|
|
1515
1507
|
Find session file
|
|
1516
1508
|
Claude: ~/.claude/projects/<slug>/*.jsonl
|
|
1517
|
-
Codex
|
|
1509
|
+
Codex: --tokens-input/--tokens-output args
|
|
1518
1510
|
|
|
|
1519
1511
|
v
|
|
1520
1512
|
Parse new entries from last_offset
|
|
@@ -1545,9 +1537,8 @@ Provider pricing (USD per million tokens):
|
|
|
1545
1537
|
|----------|-------|--------|------------|----------------|
|
|
1546
1538
|
| Claude | $3.00 | $15.00 | $0.30 | $3.75 |
|
|
1547
1539
|
| Codex | $2.00 | $8.00 | -- | -- |
|
|
1548
|
-
| Gemini | $1.25 | $5.00 | -- | -- |
|
|
1549
1540
|
|
|
1550
|
-
Context window sizes: Claude=200K, Codex=200K
|
|
1541
|
+
Context window sizes: Claude=200K, Codex=200K
|
|
1551
1542
|
|
|
1552
1543
|
Persistence: `.loki/context/tracking.json` (atomic write via temp+rename)
|
|
1553
1544
|
|
|
@@ -1797,7 +1788,7 @@ Override: `COMPLEXITY_TIER` environment variable (bypasses auto-detection)
|
|
|
1797
1788
|
loki CLI ──exec──> run.sh ──source──> completion-council.sh
|
|
1798
1789
|
| | |
|
|
1799
1790
|
| +──source──> providers/loader.sh
|
|
1800
|
-
| | +──source──> claude.sh|codex.sh|
|
|
1791
|
+
| | +──source──> claude.sh|codex.sh|cline.sh|aider.sh|opencode.sh
|
|
1801
1792
|
| |
|
|
1802
1793
|
| +──python3──> memory/{engine,storage,retrieval,consolidation}.py
|
|
1803
1794
|
| |
|
|
@@ -90,7 +90,7 @@ With an adapter that also feeds architecture.md into the analyzer, score would b
|
|
|
90
90
|
|
|
91
91
|
## 3. Agent Overlap Analysis
|
|
92
92
|
|
|
93
|
-
### BMAD Agents
|
|
93
|
+
### BMAD Agents vs Loki Agent Types
|
|
94
94
|
|
|
95
95
|
| BMAD Agent | Role | Loki Equivalent(s) | Relationship |
|
|
96
96
|
|---|---|---|---|
|
|
@@ -98,7 +98,7 @@ With an adapter that also feeds architecture.md into the analyzer, score would b
|
|
|
98
98
|
| John (PM) | PRD creation, validation | `prod-pm`, `orch-planner` | Overlapping -- Loki PM focuses on execution planning |
|
|
99
99
|
| Winston (Architect) | Architecture design | `eng-infra`, `orch-planner` | Complementary -- BMAD architect is pre-code |
|
|
100
100
|
| Sally (UX Designer) | UX specification | `prod-design` | Complementary -- BMAD UX is spec, Loki is implementation |
|
|
101
|
-
| Amelia (Developer) | Code implementation | `eng-*`
|
|
101
|
+
| Amelia (Developer) | Code implementation | `eng-*` | Superseded -- Loki has specialized dev agents |
|
|
102
102
|
| Bob (Scrum Master) | Sprint planning | `orch-coordinator` | Overlapping -- different abstraction level |
|
|
103
103
|
| Quinn (QA) | E2E test generation | `eng-qa` | Overlapping -- both generate tests |
|
|
104
104
|
| Barry (Quick Flow) | Solo rapid dev | No equivalent | Unique to BMAD |
|
package/docs/audit-logging.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Audit Logging
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Audit trails for Loki Mode operations.
|
|
4
4
|
|
|
5
5
|
## Overview
|
|
6
6
|
|
|
7
|
-
Audit logging captures
|
|
7
|
+
Audit logging captures significant events for security monitoring, debugging, and usage analytics. Audit logging is **enabled by default** as of v5.37.0.
|
|
8
8
|
|
|
9
9
|
## Configuration
|
|
10
10
|
|
|
@@ -189,17 +189,8 @@ Events by Actor:
|
|
|
189
189
|
### Tail Recent Entries
|
|
190
190
|
|
|
191
191
|
```bash
|
|
192
|
-
# Last 20 entries
|
|
192
|
+
# Last 20 entries of the newest log file (takes no flags)
|
|
193
193
|
loki enterprise audit tail
|
|
194
|
-
|
|
195
|
-
# Follow new entries in real-time
|
|
196
|
-
loki enterprise audit tail --follow
|
|
197
|
-
|
|
198
|
-
# Filter by event type
|
|
199
|
-
loki enterprise audit tail --event session.start
|
|
200
|
-
|
|
201
|
-
# Filter by level
|
|
202
|
-
loki enterprise audit tail --level error
|
|
203
194
|
```
|
|
204
195
|
|
|
205
196
|
### Search and export logs
|
|
@@ -210,19 +201,20 @@ documented both, with filter flags that do not exist). The log is newline
|
|
|
210
201
|
-delimited JSON on disk, so query and export it with ordinary tools:
|
|
211
202
|
|
|
212
203
|
```bash
|
|
213
|
-
|
|
204
|
+
# One file per day: ~/.loki/dashboard/audit/audit-YYYY-MM-DD.jsonl
|
|
205
|
+
AUDIT=~/.loki/dashboard/audit
|
|
214
206
|
|
|
215
|
-
# Search by
|
|
216
|
-
jq -c 'select(.
|
|
207
|
+
# Search by action
|
|
208
|
+
cat "$AUDIT"/audit-*.jsonl | jq -c 'select(.action == "delete")'
|
|
217
209
|
|
|
218
210
|
# Search by date range
|
|
219
|
-
jq -c 'select(.timestamp >= "2026-02-01" and .timestamp <= "2026-02-15")'
|
|
211
|
+
cat "$AUDIT"/audit-*.jsonl | jq -c 'select(.timestamp >= "2026-02-01" and .timestamp <= "2026-02-15")'
|
|
220
212
|
|
|
221
|
-
# Search by
|
|
222
|
-
jq -c 'select(.
|
|
213
|
+
# Search by user
|
|
214
|
+
cat "$AUDIT"/audit-*.jsonl | jq -c 'select(.user_id == "ci-bot")'
|
|
223
215
|
|
|
224
|
-
# Export
|
|
225
|
-
jq -s 'map(select(.
|
|
216
|
+
# Export failed actions
|
|
217
|
+
cat "$AUDIT"/audit-*.jsonl | jq -s 'map(select(.success == false))' > errors.json
|
|
226
218
|
```
|
|
227
219
|
|
|
228
220
|
The built-in views:
|
|
@@ -442,68 +434,6 @@ loki audit scan --preset default
|
|
|
442
434
|
this page showed `--action git_commit`, which is not implemented. Filter with
|
|
443
435
|
`grep` or `jq` over `.loki/audit.jsonl` instead.
|
|
444
436
|
|
|
445
|
-
## Compliance
|
|
446
|
-
|
|
447
|
-
### SOC2
|
|
448
|
-
|
|
449
|
-
Audit logging supports SOC2 requirements:
|
|
450
|
-
|
|
451
|
-
- **CC6.1** - Logical access security (auth events)
|
|
452
|
-
- **CC7.2** - System monitoring (session and task events)
|
|
453
|
-
- **CC7.3** - Incident response (error events)
|
|
454
|
-
|
|
455
|
-
Configuration:
|
|
456
|
-
|
|
457
|
-
```yaml
|
|
458
|
-
enterprise:
|
|
459
|
-
audit:
|
|
460
|
-
enabled: true
|
|
461
|
-
retention_days: 365 # 1 year minimum for SOC2
|
|
462
|
-
integrity_check: true
|
|
463
|
-
syslog_enabled: true
|
|
464
|
-
```
|
|
465
|
-
|
|
466
|
-
### HIPAA
|
|
467
|
-
|
|
468
|
-
For healthcare applications:
|
|
469
|
-
|
|
470
|
-
- Enable all authentication events
|
|
471
|
-
- Set retention to minimum 6 years
|
|
472
|
-
- Enable log encryption
|
|
473
|
-
- Forward to SIEM for monitoring
|
|
474
|
-
|
|
475
|
-
Configuration:
|
|
476
|
-
|
|
477
|
-
```yaml
|
|
478
|
-
enterprise:
|
|
479
|
-
audit:
|
|
480
|
-
enabled: true
|
|
481
|
-
retention_days: 2190 # 6 years
|
|
482
|
-
encrypt: true
|
|
483
|
-
integrity_check: true
|
|
484
|
-
syslog_enabled: true
|
|
485
|
-
```
|
|
486
|
-
|
|
487
|
-
### GDPR
|
|
488
|
-
|
|
489
|
-
For European deployments:
|
|
490
|
-
|
|
491
|
-
- Log access to personal data
|
|
492
|
-
- Provide data export capability
|
|
493
|
-
- Support right to deletion
|
|
494
|
-
- Enable audit trail for data access
|
|
495
|
-
|
|
496
|
-
Configuration:
|
|
497
|
-
|
|
498
|
-
```yaml
|
|
499
|
-
enterprise:
|
|
500
|
-
audit:
|
|
501
|
-
enabled: true
|
|
502
|
-
retention_days: 365
|
|
503
|
-
gdpr_compliance: true
|
|
504
|
-
log_data_access: true
|
|
505
|
-
```
|
|
506
|
-
|
|
507
437
|
## Troubleshooting
|
|
508
438
|
|
|
509
439
|
### Logs Not Being Created
|
|
@@ -566,9 +496,6 @@ nc -zv syslog.example.com 514
|
|
|
566
496
|
echo $LOKI_AUDIT_SYSLOG_HOST
|
|
567
497
|
echo $LOKI_AUDIT_SYSLOG_PORT
|
|
568
498
|
|
|
569
|
-
# View syslog errors in audit log
|
|
570
|
-
loki enterprise audit tail --event syslog.error
|
|
571
|
-
|
|
572
499
|
# Test manual syslog send
|
|
573
500
|
logger -n syslog.example.com -P 514 "Test from Loki Mode"
|
|
574
501
|
```
|
|
@@ -591,7 +518,6 @@ logger -n syslog.example.com -P 514 "Test from Loki Mode"
|
|
|
591
518
|
2. Rotate logs daily
|
|
592
519
|
3. Compress rotated logs
|
|
593
520
|
4. Set reasonable retention period
|
|
594
|
-
5. Exclude high-volume low-value events (e.g., api.request)
|
|
595
521
|
|
|
596
522
|
### Compliance
|
|
597
523
|
|
package/docs/authentication.md
CHANGED
|
@@ -30,7 +30,7 @@ loki enterprise token generate my-token
|
|
|
30
30
|
loki enterprise token generate ci-bot --scopes "read,write" --expires 30
|
|
31
31
|
|
|
32
32
|
# With role
|
|
33
|
-
loki enterprise token generate admin-bot --
|
|
33
|
+
loki enterprise token generate admin-bot --scopes '*' --expires 90
|
|
34
34
|
```
|
|
35
35
|
|
|
36
36
|
Output:
|
|
@@ -109,7 +109,7 @@ Predefined roles map to common access patterns:
|
|
|
109
109
|
Generate token with role:
|
|
110
110
|
|
|
111
111
|
```bash
|
|
112
|
-
loki enterprise token generate viewer-bot --
|
|
112
|
+
loki enterprise token generate viewer-bot --scopes read
|
|
113
113
|
```
|
|
114
114
|
|
|
115
115
|
Generate token with custom scopes:
|
|
@@ -302,8 +302,8 @@ curl https://accounts.google.com/.well-known/openid-configuration
|
|
|
302
302
|
# Check client ID is correct
|
|
303
303
|
echo $LOKI_OIDC_CLIENT_ID
|
|
304
304
|
|
|
305
|
-
# View
|
|
306
|
-
loki enterprise audit tail
|
|
305
|
+
# View recent audit entries
|
|
306
|
+
loki enterprise audit tail
|
|
307
307
|
|
|
308
308
|
# Check redirect URI is whitelisted in identity provider
|
|
309
309
|
# Should be: http://localhost:57374/auth/oidc/callback
|
package/docs/authorization.md
CHANGED
|
@@ -121,8 +121,8 @@ carry scopes directly.
|
|
|
121
121
|
# Generate token with scopes
|
|
122
122
|
loki enterprise token generate dev-1 --scopes control,read,write --expires 30
|
|
123
123
|
loki enterprise token generate viewer-1 --scopes read --expires 90
|
|
124
|
-
loki enterprise token generate auditor-1 --
|
|
125
|
-
loki enterprise token generate admin-1 --
|
|
124
|
+
loki enterprise token generate auditor-1 --scopes read,audit --expires 180
|
|
125
|
+
loki enterprise token generate admin-1 --scopes '*' --expires 365
|
|
126
126
|
```
|
|
127
127
|
|
|
128
128
|
### Configuration File
|
|
@@ -201,37 +201,6 @@ Scopes are additive:
|
|
|
201
201
|
| `DELETE /api/enterprise/tokens/:id` | `*` | Admin only |
|
|
202
202
|
| `POST /api/config` | `*` | Admin only |
|
|
203
203
|
|
|
204
|
-
## Custom Roles
|
|
205
|
-
|
|
206
|
-
Define custom roles for specific use cases:
|
|
207
|
-
|
|
208
|
-
```yaml
|
|
209
|
-
# .loki/config.yaml
|
|
210
|
-
enterprise:
|
|
211
|
-
rbac:
|
|
212
|
-
custom_roles:
|
|
213
|
-
# Read-only with metrics access
|
|
214
|
-
metrics_viewer:
|
|
215
|
-
scopes: ["read"]
|
|
216
|
-
description: "View metrics and dashboard only"
|
|
217
|
-
|
|
218
|
-
# Task management only
|
|
219
|
-
task_manager:
|
|
220
|
-
scopes: ["read", "write"]
|
|
221
|
-
description: "Create and update tasks, no session control"
|
|
222
|
-
|
|
223
|
-
# Security analyst
|
|
224
|
-
security_analyst:
|
|
225
|
-
scopes: ["read", "audit"]
|
|
226
|
-
description: "View audit logs and security events"
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
Generate token with custom role:
|
|
230
|
-
|
|
231
|
-
```bash
|
|
232
|
-
loki enterprise token generate metrics-bot --role metrics_viewer
|
|
233
|
-
```
|
|
234
|
-
|
|
235
204
|
## Permission Checks
|
|
236
205
|
|
|
237
206
|
### CLI
|
|
@@ -327,19 +296,19 @@ enterprise:
|
|
|
327
296
|
```bash
|
|
328
297
|
# CI/CD pipeline token
|
|
329
298
|
loki enterprise token generate github-actions \
|
|
330
|
-
--
|
|
299
|
+
--scopes control,read,write \
|
|
331
300
|
--scopes "control,read,write" \
|
|
332
301
|
--expires 365
|
|
333
302
|
|
|
334
303
|
# Monitoring system token
|
|
335
304
|
loki enterprise token generate datadog \
|
|
336
|
-
--
|
|
305
|
+
--scopes read \
|
|
337
306
|
--scopes "read" \
|
|
338
307
|
--expires 9999
|
|
339
308
|
|
|
340
309
|
# Security scanner token
|
|
341
310
|
loki enterprise token generate security-scanner \
|
|
342
|
-
--
|
|
311
|
+
--scopes read,audit \
|
|
343
312
|
--scopes "read,audit" \
|
|
344
313
|
--expires 180
|
|
345
314
|
```
|
|
@@ -350,9 +319,8 @@ loki enterprise token generate security-scanner \
|
|
|
350
319
|
|
|
351
320
|
1. Start with minimal permissions (viewer role)
|
|
352
321
|
2. Grant additional scopes only as needed
|
|
353
|
-
3.
|
|
354
|
-
4.
|
|
355
|
-
5. Remove unused tokens immediately
|
|
322
|
+
3. Review and audit role assignments quarterly
|
|
323
|
+
4. Remove unused tokens immediately
|
|
356
324
|
|
|
357
325
|
### Role Assignment
|
|
358
326
|
|
|
@@ -382,12 +350,12 @@ loki enterprise token list
|
|
|
382
350
|
# Read the route's required scope from dashboard/server.py, then compare
|
|
383
351
|
# against the scopes on your token from the listing above
|
|
384
352
|
|
|
385
|
-
# Check audit
|
|
386
|
-
loki enterprise audit tail
|
|
353
|
+
# Check recent audit entries for the denial
|
|
354
|
+
loki enterprise audit tail
|
|
387
355
|
|
|
388
356
|
# Generate new token with correct role
|
|
389
357
|
loki enterprise token revoke <old-token>
|
|
390
|
-
loki enterprise token generate <name> --
|
|
358
|
+
loki enterprise token generate <name> --scopes control,read,write
|
|
391
359
|
```
|
|
392
360
|
|
|
393
361
|
### OIDC Role Mapping Not Working
|
|
@@ -397,13 +365,13 @@ loki enterprise token generate <name> --role operator
|
|
|
397
365
|
# Check identity provider configuration
|
|
398
366
|
|
|
399
367
|
# Test with explicit token role first
|
|
400
|
-
loki enterprise token generate test-admin --
|
|
368
|
+
loki enterprise token generate test-admin --scopes '*'
|
|
401
369
|
|
|
402
|
-
# Check
|
|
403
|
-
|
|
370
|
+
# Check which claim carries the roles
|
|
371
|
+
echo "$LOKI_OIDC_ROLES_CLAIM"
|
|
404
372
|
|
|
405
|
-
# View
|
|
406
|
-
loki enterprise audit tail
|
|
373
|
+
# View recent audit entries
|
|
374
|
+
loki enterprise audit tail
|
|
407
375
|
```
|
|
408
376
|
|
|
409
377
|
### Scope Confusion
|