loki-mode 10.5.16 → 10.5.19

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.
Files changed (133) hide show
  1. package/.claude-plugin/marketplace.json +12 -0
  2. package/README.md +878 -29
  3. package/SKILL.md +3 -3
  4. package/VERSION +1 -1
  5. package/autonomy/lib/backlog.py +280 -0
  6. package/autonomy/lib/loki_yaml.py +225 -0
  7. package/autonomy/lib/proof-generator.py +251 -0
  8. package/autonomy/lib/proof-verify.py +1 -0
  9. package/autonomy/loki +117 -12
  10. package/autonomy/run.sh +27 -2
  11. package/autonomy/verify.sh +11 -0
  12. package/completions/_loki +1 -0
  13. package/completions/loki.bash +2 -2
  14. package/dashboard/__init__.py +1 -1
  15. package/dashboard/api_start.py +463 -0
  16. package/dashboard/server.py +31 -0
  17. package/dashboard/static/start.html +100 -0
  18. package/docs/COMPARISON.md +6 -19
  19. package/docs/COMPETITIVE-ANALYSIS.md +6 -41
  20. package/docs/CRASH-REPORTING-PLAN.md +1 -1
  21. package/docs/ENTERPRISE-IDENTITY-ROADMAP.md +1 -1
  22. package/docs/INSTALLATION.md +1 -1
  23. package/docs/PRIVACY.md +1 -1
  24. package/docs/R8-SHAREABLE-TEAM-ASSETS-PLAN.md +1 -1
  25. package/docs/WANG-PRINCIPLES-PLAN.md +1 -1
  26. package/docs/architecture/STATE-MACHINES.md +18 -27
  27. package/docs/architecture/bmad-integration-validation.md +2 -2
  28. package/docs/audit-logging.md +12 -86
  29. package/docs/authentication.md +4 -4
  30. package/docs/authorization.md +15 -47
  31. package/docs/auto-claude-comparison.md +1 -33
  32. package/docs/certification/01-core-concepts/lab.md +3 -3
  33. package/docs/certification/01-core-concepts/lesson.md +11 -22
  34. package/docs/certification/01-core-concepts/quiz.md +7 -7
  35. package/docs/certification/02-enterprise-features/lab.md +0 -2
  36. package/docs/certification/02-enterprise-features/lesson.md +0 -10
  37. package/docs/certification/04-production-deployment/lab.md +1 -1
  38. package/docs/certification/05-troubleshooting/lab.md +2 -2
  39. package/docs/certification/README.md +1 -1
  40. package/docs/certification/answer-key.md +37 -20
  41. package/docs/certification/certification-exam.md +7 -7
  42. package/docs/competitive/emergence-others-analysis.md +3 -3
  43. package/docs/competitive/replit-lovable-analysis.md +2 -2
  44. package/docs/cursor-comparison.md +2 -2
  45. package/docs/dashboard-guide.md +14 -2
  46. package/docs/dev/architecture-reference.md +2 -2
  47. package/docs/dev/project-structure.md +1 -1
  48. package/docs/enterprise/architecture.md +11 -8
  49. package/docs/enterprise/integration-cookbook.md +23 -14
  50. package/docs/enterprise/migration.md +5 -9
  51. package/docs/enterprise/performance.md +3 -6
  52. package/docs/enterprise/sdk-guide.md +1 -1
  53. package/docs/enterprise/security.md +8 -17
  54. package/docs/exit-codes.md +29 -0
  55. package/docs/git-workflow.md +4 -62
  56. package/docs/network-security.md +3 -13
  57. package/docs/plans/ULTRAPLAN-FORGE-BAAS.md +1 -1
  58. package/docs/prd-purple-lab-platform-v2.md +1 -1
  59. package/docs/prd-purple-lab-platform.md +1 -3
  60. package/docs/research-2026-07/GAP-ANALYSIS-BACKLOG.md +1 -1
  61. package/docs/show-hn-post.md +3 -4
  62. package/docs/siem-integration.md +8 -10
  63. package/docs/test-scenarios/edge-cases.md +2 -2
  64. package/docs/test-scenarios/enterprise-scenarios.md +4 -4
  65. package/docs/v10/BOARD.md +21 -11
  66. package/docs/v10/DECISIONS.md +36 -0
  67. package/docs/v10/FOUNDER-QUEUE.md +1 -0
  68. package/docs/v10/GUIDE.md +5 -3
  69. package/docs/v10/METRICS.md +36 -0
  70. package/docs/v10/PROGRESS.md +76 -0
  71. package/docs/walkthrough/README.md +1 -7
  72. package/loki-ts/dist/loki.js +415 -407
  73. package/mcp/__init__.py +1 -1
  74. package/package.json +1 -1
  75. package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
  76. package/web-app/dist/assets/{AdminPage-B1zdOJaF.js → AdminPage-BH_7fpoz.js} +1 -1
  77. package/web-app/dist/assets/{Avatar-DKjAJ_w7.js → Avatar-BzyhrX0s.js} +1 -1
  78. package/web-app/dist/assets/{Badge-DP-UrPLv.js → Badge-CL05xwgC.js} +1 -1
  79. package/web-app/dist/assets/{Button-c8qBEA2K.js → Button-BVHrGLGH.js} +1 -1
  80. package/web-app/dist/assets/{CockpitPage-CFljzGbi.js → CockpitPage-B9BAEqD-.js} +1 -1
  81. package/web-app/dist/assets/{ComparePage-BNKqdNRu.js → ComparePage-D4grckhY.js} +1 -1
  82. package/web-app/dist/assets/{ErrorBoundary-DNkpXGt5.js → ErrorBoundary-Bg52u7eg.js} +1 -1
  83. package/web-app/dist/assets/{EvidenceReceiptPanel-CQd49V4Z.js → EvidenceReceiptPanel-B15kRZbJ.js} +1 -1
  84. package/web-app/dist/assets/{GitHubIssuesPanel-B9wji_yi.js → GitHubIssuesPanel-DP_BhJSC.js} +1 -1
  85. package/web-app/dist/assets/{GitHubPRsPanel-BkfCV4ag.js → GitHubPRsPanel-DJBu83u9.js} +1 -1
  86. package/web-app/dist/assets/{HomePage-BVV3Cowy.js → HomePage-6mw4uvLs.js} +2 -2
  87. package/web-app/dist/assets/{LoginPage-CWiOenLJ.js → LoginPage-BWWzFHif.js} +1 -1
  88. package/web-app/dist/assets/{MagicPage-DckrjTVd.js → MagicPage-CSyo7k5t.js} +1 -1
  89. package/web-app/dist/assets/{MetricsPage-DNBnH68C.js → MetricsPage-Buq03cch.js} +1 -1
  90. package/web-app/dist/assets/{NotFoundPage-Ca8za8mL.js → NotFoundPage-BG8vuV4g.js} +1 -1
  91. package/web-app/dist/assets/{ProjectPage-C92sm9xi.js → ProjectPage-D7eJn--6.js} +3 -3
  92. package/web-app/dist/assets/{ProjectsPage-BxsCyJ95.js → ProjectsPage-DXPycvjA.js} +1 -1
  93. package/web-app/dist/assets/{SettingsPage-BKg-6aHI.js → SettingsPage-Blvav87U.js} +1 -1
  94. package/web-app/dist/assets/{ShowcasePage-Bw_fI5rG.js → ShowcasePage-ZCAKRsNN.js} +1 -1
  95. package/web-app/dist/assets/{SystemSettingsPage-Bc-2OWUp.js → SystemSettingsPage-ClzjKfI4.js} +1 -1
  96. package/web-app/dist/assets/{TeamsPage-GsYRD1b9.js → TeamsPage-CKp1-WGX.js} +1 -1
  97. package/web-app/dist/assets/{TemplatesPage-BN7ZlULA.js → TemplatesPage-C0yAp2Yl.js} +1 -1
  98. package/web-app/dist/assets/{TerminalOutput-d7__ysTd.js → TerminalOutput-C3KbV8E7.js} +1 -1
  99. package/web-app/dist/assets/{activity-ycOMpCGz.js → activity-CG5PtpVI.js} +1 -1
  100. package/web-app/dist/assets/{bell-B93o4lsL.js → bell-CyLp--NR.js} +1 -1
  101. package/web-app/dist/assets/{bot-CB0kmriG.js → bot-Dp0zY9t7.js} +1 -1
  102. package/web-app/dist/assets/{check-BAYNAOEO.js → check-ipranz8L.js} +1 -1
  103. package/web-app/dist/assets/{chevron-left-Bgu8UgyR.js → chevron-left-DhYs9D3t.js} +1 -1
  104. package/web-app/dist/assets/{circle-alert-n_FciWUP.js → circle-alert-BLAxBNgz.js} +1 -1
  105. package/web-app/dist/assets/{clock-CNceeS66.js → clock-DzocnapF.js} +1 -1
  106. package/web-app/dist/assets/{cloud-CJBEdb7m.js → cloud-B3YsIUwq.js} +1 -1
  107. package/web-app/dist/assets/{code-xml-BHnKVqrH.js → code-xml-BPcy_Eqm.js} +1 -1
  108. package/web-app/dist/assets/{database-DSVoL7Pl.js → database-DOuuclZf.js} +1 -1
  109. package/web-app/dist/assets/{dollar-sign-48dvOe4H.js → dollar-sign-o77cj-xB.js} +1 -1
  110. package/web-app/dist/assets/{file-code-corner-8yzS5DeZ.js → file-code-corner-BZ2VMnYA.js} +1 -1
  111. package/web-app/dist/assets/{file-plus-BcuVrrey.js → file-plus-DeHfGncj.js} +1 -1
  112. package/web-app/dist/assets/{globe-Bb-O58oN.js → globe-DmIW-phf.js} +1 -1
  113. package/web-app/dist/assets/{hammer-DeMMY6xW.js → hammer-CoW8R8V5.js} +1 -1
  114. package/web-app/dist/assets/{index-9hue9wt2.js → index-5rCTAnsF.js} +3 -3
  115. package/web-app/dist/assets/{layers-DmCoMrQC.js → layers-DGEk-2RQ.js} +1 -1
  116. package/web-app/dist/assets/{loader-circle-CJvjM7JW.js → loader-circle-DXn-F-H5.js} +1 -1
  117. package/web-app/dist/assets/{lock-Dpje5cWO.js → lock-D5nAjeUu.js} +1 -1
  118. package/web-app/dist/assets/{package-mA_hCaf8.js → package-D8Drpzi8.js} +1 -1
  119. package/web-app/dist/assets/{plus-Db0JnAoC.js → plus-C-0T9dAu.js} +1 -1
  120. package/web-app/dist/assets/{refresh-cw-DbCL1y7h.js → refresh-cw-AyYQQPZG.js} +1 -1
  121. package/web-app/dist/assets/{rotate-ccw-Bt6pp50d.js → rotate-ccw-DYbslLfT.js} +1 -1
  122. package/web-app/dist/assets/{scroll-text-7j0hXxm7.js → scroll-text-CQFQhF_6.js} +1 -1
  123. package/web-app/dist/assets/{server-BMJYtpVZ.js → server-DxNytQEJ.js} +1 -1
  124. package/web-app/dist/assets/{shield-alert-Bu8Pbdy-.js → shield-alert-Xj5wGUSK.js} +1 -1
  125. package/web-app/dist/assets/{thumbs-up-8erzRJ8k.js → thumbs-up-DW0j9Yxz.js} +1 -1
  126. package/web-app/dist/assets/{trash-2-DBC_D_Hv.js → trash-2-VOdpiJ1e.js} +1 -1
  127. package/web-app/dist/assets/{trending-down-DMNq5hSm.js → trending-down-eTizH4_b.js} +1 -1
  128. package/web-app/dist/assets/{trending-up-9b1IqBqR.js → trending-up-agYVl7bU.js} +1 -1
  129. package/web-app/dist/assets/{upload-SoA0iiLG.js → upload-DQ3NfXA_.js} +1 -1
  130. package/web-app/dist/assets/{usePolling-DLP2FX9M.js → usePolling-BKETnkDT.js} +1 -1
  131. package/web-app/dist/assets/{user-D7Pb9wW3.js → user-Cv6BNmOT.js} +1 -1
  132. package/web-app/dist/index.html +1 -1
  133. package/docs/README-FULL.md +0 -977
@@ -84,21 +84,6 @@ Loki Mode is built on peer-reviewed research:
84
84
 
85
85
  **Verdict: Loki Mode wins** - Academically grounded.
86
86
 
87
- ### 2. Specialized Agent Types
88
- Loki Mode has 41 specialized agent roles across 8 domains - prompt-defined specifications the orchestrator adopts per phase, with parallel review (blind council) and optional worktree streams on Claude Code, sequential on other providers:
89
- - Engineering (8): frontend, backend, database, mobile, API, QA, perf, infra
90
- - Operations (8): DevOps, SRE, security, monitoring, incident, release, cost, compliance
91
- - Business (8): marketing, sales, finance, legal, support, HR, investor, partnerships
92
- - Data (3): ML, engineering, analytics
93
- - Product (3): PM, design, tech writer
94
- - Growth (4): hacker, community, success, lifecycle
95
- - Review (3): code, business, security
96
- - Orchestration (4): planner, sub-planner, judge, coordinator
97
-
98
- **Auto-Claude:** 4 agent types: planner, coder, memory_manager, QA
99
-
100
- **Verdict: Loki Mode wins** - 10x more specialized coverage.
101
-
102
87
  ### 3. Full SDLC Coverage
103
88
  Loki Mode covers:
104
89
  - Engineering (code, tests, deployment)
@@ -143,25 +128,10 @@ Beyond the gates, the SDLC pipeline covers these phases:
143
128
 
144
129
  **Verdict: Loki Mode wins** - Comprehensive quality vs single loop.
145
130
 
146
- ### 6. Published Benchmarks
147
- Loki Mode:
148
- - HumanEval: 98.78% Pass@1 (162/164, reproducible harness)
149
- - SWE-bench: not measured. A patch-generation harness exists (299/300 diffs
150
- produced), but the official evaluator was never run, so there is no resolve
151
- rate. Patch generation is not a success metric and is not comparable to
152
- other tools' resolution scores.
153
-
154
- **Auto-Claude:** No published benchmarks.
155
-
156
- **Verdict: Loki Mode wins on HumanEval transparency** - one real, reproducible
157
- number versus none. No SWE-bench performance claim is made.
158
-
159
131
  ### 7. Licensing
160
- - Loki Mode: MIT (free, no restrictions)
132
+ - Loki Mode: BUSL-1.1 (source-available)
161
133
  - Auto-Claude: AGPL-3.0 (copyleft, requires open-sourcing modifications)
162
134
 
163
- **Verdict: Loki Mode wins** - More permissive for commercial use.
164
-
165
135
  ### 8. API Access
166
136
  - Loki Mode: Works with Claude API (any tier)
167
137
  - Auto-Claude: Requires Claude Pro/Max subscription
@@ -235,10 +205,8 @@ Loki Mode now incorporates proven patterns from Cursor's large-scale agent deplo
235
205
  ## What Auto-Claude Could Learn from Loki Mode
236
206
 
237
207
  1. **Research Foundation** - Document the science behind decisions
238
- 2. **Specialized Agents** - More than 4 generic agent types
239
208
  3. **Anti-Sycophancy** - Blind review prevents false positives
240
209
  4. **Full SDLC** - Business, marketing, growth automation
241
- 5. **Published Benchmarks** - Verify claims with reproducible tests
242
210
  6. **Source-available (BUSL-1.1)** - Inspect and self-host the full code
243
211
 
244
212
  ---
@@ -8,7 +8,7 @@ Install Loki Mode, verify the installation, create a simple PRD, run it, and exa
8
8
 
9
9
  - Node.js 18+ installed
10
10
  - npm available on your PATH
11
- - A supported AI provider CLI installed (Claude Code, Codex CLI, or Gemini CLI)
11
+ - A supported AI provider CLI installed (Claude Code, Cline, Codex CLI, Aider, or opencode)
12
12
  - An active API key for your chosen provider
13
13
 
14
14
  ## Step 1: Install Loki Mode
@@ -23,7 +23,7 @@ Verify the installation:
23
23
  loki version
24
24
  ```
25
25
 
26
- You should see output like `5.51.0` (or the current version).
26
+ You should see the installed version number.
27
27
 
28
28
  ## Step 2: Run the Doctor Check
29
29
 
@@ -87,7 +87,7 @@ Alternatively, if using a specific provider:
87
87
  ```bash
88
88
  loki start --provider claude ./simple-prd.md # Claude Code (default)
89
89
  loki start --provider codex ./simple-prd.md # OpenAI Codex CLI
90
- loki start --provider gemini ./simple-prd.md # Google Gemini CLI
90
+ loki start --provider cline ./simple-prd.md # Cline
91
91
  ```
92
92
 
93
93
  You can also force the simple complexity tier to limit the number of phases:
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## What is Loki Mode?
4
4
 
5
- Loki Mode is a multi-agent autonomous system created by [Autonomi](https://www.autonomi.dev/). It takes a Product Requirements Document (PRD) and builds a fully deployed product with minimal human intervention. It supports three AI provider CLIs: Claude Code (full features), OpenAI Codex CLI (degraded mode), and Google Gemini CLI (degraded mode).
5
+ Loki Mode is a multi-agent autonomous system created by [Autonomi](https://www.autonomi.dev/). It takes a Product Requirements Document (PRD) and builds a fully deployed product with minimal human intervention. It supports five provider CLIs: Claude Code (full features), Cline (reduced), OpenAI Codex CLI and Aider (degraded, sequential), and opencode (model-agnostic).
6
6
 
7
7
  Loki Mode is installed as an npm package and invoked through the `loki` CLI or directly within Claude Code as a skill.
8
8
 
@@ -70,18 +70,7 @@ Or via the environment variable `LOKI_COMPLEXITY=simple|standard|complex`.
70
70
 
71
71
  ## Agents
72
72
 
73
- Loki Mode defines **41 specialized agent types** organized into **8 domains**:
74
-
75
- | Domain | Agent Count | Examples |
76
- |-------|-------------|----------|
77
- | Engineering | 8 | frontend, backend, database, mobile, api, qa, perf, infra |
78
- | Operations | 8 | devops, sre, security, monitor, incident, release, cost, compliance |
79
- | Business | 8 | marketing, sales, finance, legal, support, hr, investor, partnerships |
80
- | Data | 3 | ml, eng, analytics |
81
- | Product | 3 | pm, design, techwriter |
82
- | Growth | 4 | hacker, community, success, lifecycle |
83
- | Review | 3 | code, business, security |
84
- | Orchestration | 4 | (internal system agents) |
73
+ Loki Mode defines specialized agent roles across engineering, operations, product, data, growth and review domains.
85
74
 
86
75
  These agents are **roles defined through prompts**, not separate programs. They are implemented using the Claude Code Task tool with role-specific prompts:
87
76
 
@@ -99,7 +88,7 @@ Task(
99
88
  )
100
89
  ```
101
90
 
102
- A simple project typically uses 5-10 agents. Complex projects use more as needed. The orchestrator spawns only the agents required for the current task.
91
+ The orchestrator spawns only the agents required for the current task.
103
92
 
104
93
  Full agent type definitions are in `references/agent-types.md`.
105
94
 
@@ -154,14 +143,14 @@ The memory engine is implemented in Python (`memory/engine.py`, `memory/retrieva
154
143
 
155
144
  Loki Mode maps tasks to model tiers rather than specific model names:
156
145
 
157
- | Task Type | Tier | Claude | Codex | Gemini |
158
- |-----------|------|--------|-------|--------|
159
- | Architecture, system design | planning | opus | effort=xhigh | thinking=high |
160
- | Feature implementation, bugs | development | opus | effort=high | thinking=medium |
161
- | Code review | development | opus (sonnet for reviewers) | effort=high | thinking=medium |
162
- | Unit tests, linting, docs | fast | sonnet | effort=low | thinking=low |
146
+ | Task Type | Tier | Claude | Codex |
147
+ |-----------|------|--------|-------|
148
+ | Architecture, system design | planning | opus | effort=xhigh |
149
+ | Feature implementation, bugs | development | opus | effort=high |
150
+ | Code review | development | opus (sonnet for reviewers) | effort=high |
151
+ | Unit tests, linting, docs | fast | sonnet | effort=low |
163
152
 
164
- Claude Code has full feature support: parallel agents (up to 10 simultaneous), the Task tool, and MCP integration. Codex and Gemini run in degraded mode: sequential execution only, no Task tool, no parallel agents.
153
+ Claude Code has full feature support: parallel agents (up to 10 simultaneous), the Task tool, and MCP integration. Cline runs in reduced mode; Codex and Aider run in degraded mode (sequential execution only, no Task tool, no parallel agents); opencode is model-agnostic.
165
154
 
166
155
  ## Key Files
167
156
 
@@ -180,4 +169,4 @@ Every Loki Mode project uses these files in the `.loki/` directory:
180
169
 
181
170
  ## Summary
182
171
 
183
- Loki Mode is an autonomous multi-agent system that follows the RARV cycle to build software from PRDs. It uses 41 agent types organized into 8 domains, enforces quality through 8 gates with blind peer review, and maintains episodic/semantic/procedural memory for continuous learning. Projects are classified into simple, standard, or complex tiers that determine the number of phases executed.
172
+ Loki Mode is an autonomous multi-agent system that follows the RARV cycle to build software from PRDs. It uses specialized agent roles, enforces quality through 8 gates with blind peer review, and maintains episodic/semantic/procedural memory for continuous learning. Projects are classified into simple, standard, or complex tiers that determine the number of phases executed.
@@ -13,12 +13,12 @@ D) Review, Approve, Release, Validate
13
13
 
14
14
  ---
15
15
 
16
- **Question 2:** How many specialized agent types does Loki Mode define?
16
+ **Question 2:** How many active providers does Loki Mode support?
17
17
 
18
- A) 8
19
- B) 25
20
- C) 41
21
- D) 50
18
+ A) 3
19
+ B) 4
20
+ C) 5
21
+ D) 6
22
22
 
23
23
  ---
24
24
 
@@ -79,9 +79,9 @@ D) That cyclomatic complexity stays under 10
79
79
  **Question 9:** Which AI provider supports full Loki Mode features including parallel agents and the Task tool?
80
80
 
81
81
  A) OpenAI Codex CLI
82
- B) Google Gemini CLI
82
+ B) Cline
83
83
  C) Claude Code
84
- D) All three providers equally
84
+ D) All providers equally
85
85
 
86
86
  ---
87
87
 
@@ -43,8 +43,6 @@ Review the available audit environment variables:
43
43
  # LOKI_AUDIT_SYSLOG_HOST -- Enable syslog forwarding
44
44
  # LOKI_AUDIT_SYSLOG_PORT -- Syslog port (default: 514)
45
45
  # LOKI_AUDIT_SYSLOG_PROTO -- Syslog protocol: udp or tcp
46
- # LOKI_AUDIT_LEVEL -- Minimum severity to log
47
- # LOKI_AUDIT_EXCLUDE_EVENTS -- Comma-separated events to skip
48
46
  ```
49
47
 
50
48
  To temporarily disable audit logging (not recommended for production):
@@ -63,16 +63,6 @@ loki start ./prd.md
63
63
  | `LOKI_AUDIT_SYSLOG_PORT` | `514` | Syslog server port |
64
64
  | `LOKI_AUDIT_SYSLOG_PROTO` | `udp` | Protocol: `udp` or `tcp` |
65
65
  | `LOKI_SYSLOG_FACILITY` | `local0` | Syslog facility (local0-local7) |
66
- | `LOKI_SYSLOG_SEVERITY` | `info` | Minimum severity to forward |
67
-
68
- ### Filtering
69
-
70
- Control audit log verbosity:
71
-
72
- ```bash
73
- export LOKI_AUDIT_LEVEL=warning # Minimum severity
74
- export LOKI_AUDIT_EXCLUDE_EVENTS=api.request,api.response # Skip noisy events
75
- ```
76
66
 
77
67
  ## OpenTelemetry (OTEL) Observability
78
68
 
@@ -71,7 +71,7 @@ ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY docker-compose run \
71
71
  loki start ./prd.md
72
72
  ```
73
73
 
74
- **Note:** Replace `ANTHROPIC_API_KEY` with the appropriate key for your provider (`OPENAI_API_KEY` for Codex, `GOOGLE_API_KEY` for Gemini).
74
+ **Note:** Replace `ANTHROPIC_API_KEY` with the appropriate key for your provider (for example `OPENAI_API_KEY` for Codex).
75
75
 
76
76
  ## Step 4: Verify the Dashboard
77
77
 
@@ -60,7 +60,7 @@ cat > .loki/state/circuit-breakers.json << 'EOF'
60
60
  "cooldown_until": "2026-02-20T14:30:42Z",
61
61
  "failure_window_start": "2026-02-20T14:24:50Z"
62
62
  },
63
- "api/gemini": {
63
+ "api/opencode": {
64
64
  "state": "HALF_OPEN",
65
65
  "failure_count": 0,
66
66
  "success_count": 1,
@@ -137,7 +137,7 @@ cat .loki/state/circuit-breakers.json | jq 'to_entries[] | select(.value.state =
137
137
  cat .loki/state/circuit-breakers.json | jq '.["api/openai"].cooldown_until'
138
138
 
139
139
  # Check how many successes the HALF_OPEN circuit needs
140
- cat .loki/state/circuit-breakers.json | jq '.["api/gemini"].success_count'
140
+ cat .loki/state/circuit-breakers.json | jq '.["api/opencode"].success_count'
141
141
  ```
142
142
 
143
143
  **Questions to answer:**
@@ -27,7 +27,7 @@ The Autonomi Certified Developer certification validates your knowledge of Loki
27
27
  - Familiarity with command-line tools (bash, git, npm)
28
28
  - Basic understanding of AI/LLM concepts (prompts, models, tokens)
29
29
  - Node.js 18+ installed
30
- - A supported AI provider CLI installed (Claude Code, Codex CLI, or Gemini CLI)
30
+ - A supported AI provider CLI installed (Claude Code, Cline, Codex CLI, Aider, or opencode)
31
31
 
32
32
  ## How to Use This Program
33
33
 
@@ -9,14 +9,14 @@ This file contains answers for all module quizzes and the final certification ex
9
9
  | Question | Answer | Explanation |
10
10
  |----------|--------|-------------|
11
11
  | 1 | B | RARV = Reason, Act, Reflect, Verify |
12
- | 2 | C | 41 agent types: 37 domain + 4 orchestration |
12
+ | 2 | C | 5 active providers: claude, codex, cline, aider, opencode |
13
13
  | 3 | B | After 5 failures, the task moves to `.loki/queue/dead-letter.json` |
14
14
  | 4 | C | architecture-strategist is always one of the 3 selected reviewers |
15
15
  | 5 | D | 8 quality gates (Static Analysis through Magic Modules Debate); backward-compatibility is a conditional healing-mode auditor, not one of the 8 |
16
16
  | 6 | B | Episodic, semantic, and procedural memory |
17
17
  | 7 | B | Simple tier uses 3 phases |
18
18
  | 8 | C | Gate 7 (Documentation Coverage) checks README presence, docs freshness within 10 commits, and API docs for packages; coverage % is not measured this release |
19
- | 9 | C | Claude Code supports full features; Codex and Gemini run in degraded mode |
19
+ | 9 | C | Claude Code supports full features; Cline runs reduced, Codex and Aider run degraded |
20
20
  | 10 | B | If all 3 reviewers unanimously approve, a Devil's Advocate reviewer runs |
21
21
 
22
22
  ---
@@ -25,16 +25,16 @@ This file contains answers for all module quizzes and the final certification ex
25
25
 
26
26
  | Question | Answer | Explanation |
27
27
  |----------|--------|-------------|
28
- | 1 | A | Audit logging is enabled by default since v5.38.0 |
28
+ | 1 | B | Audit logging is enabled by default since v5.38.0 |
29
29
  | 2 | C | OTEL activates when `LOKI_OTEL_ENDPOINT` is set to an OTLP endpoint |
30
30
  | 3 | C | Default dashboard port is 57374 |
31
- | 4 | A | `LOKI_ENTERPRISE_AUTH=true` enables token authentication |
32
- | 5 | D | Syslog supports UDP and TCP via `LOKI_AUDIT_SYSLOG_PROTO` |
33
- | 6 | D | Without the endpoint set, OTEL uses no-op stubs with zero overhead |
34
- | 7 | A | `loki enterprise token generate my-token` creates an API token |
35
- | 8 | D | Set `LOKI_TLS_CERT` and `LOKI_TLS_KEY` to PEM file paths |
36
- | 9 | A | Controls whether `HUMAN_INPUT.md` can inject directives (disabled by default for security) |
37
- | 10 | A | `loki enterprise status` shows all enterprise feature states |
31
+ | 4 | B | `LOKI_ENTERPRISE_AUTH=true` enables token authentication |
32
+ | 5 | B | Syslog supports UDP and TCP via `LOKI_AUDIT_SYSLOG_PROTO` |
33
+ | 6 | C | Without the endpoint set, OTEL uses no-op stubs with zero overhead |
34
+ | 7 | B | `loki enterprise token generate my-token` creates an API token |
35
+ | 8 | B | Set `LOKI_TLS_CERT` and `LOKI_TLS_KEY` to PEM file paths |
36
+ | 9 | B | Controls whether `HUMAN_INPUT.md` can inject directives (disabled by default for security) |
37
+ | 10 | B | `loki enterprise status` shows all enterprise feature states |
38
38
 
39
39
  ---
40
40
 
@@ -43,13 +43,13 @@ This file contains answers for all module quizzes and the final certification ex
43
43
  | Question | Answer | Explanation |
44
44
  |----------|--------|-------------|
45
45
  | 1 | B | Goal, Constraints, Context, Output (documented in `skills/agents.md`) |
46
- | 2 | D | Confidence below 0.40 triggers human decision flag |
46
+ | 2 | C | Confidence below 0.40 triggers human decision flag |
47
47
  | 3 | C | Each verification runs independently without seeing the original response |
48
- | 4 | A | security-sentinel > test-coverage-auditor > performance-oracle > dependency-analyst |
49
- | 5 | A | Prevents "technically correct but wrong feature" by separating spec and quality reviews |
50
- | 6 | D | Extraction triggers on novel insights: bug fixes, non-obvious solutions, reusable patterns |
48
+ | 4 | B | security-sentinel > test-coverage-auditor > performance-oracle > dependency-analyst |
49
+ | 5 | B | Prevents "technically correct but wrong feature" by separating spec and quality reviews |
50
+ | 6 | B | Extraction triggers on novel insights: bug fixes, non-obvious solutions, reusable patterns |
51
51
  | 7 | C | 4 parallel research agents enhance the plan in the deepen-plan phase |
52
- | 8 | D | on_file_write triggers lint, typecheck, and secrets scan immediately after writes |
52
+ | 8 | B | on_file_write triggers lint, typecheck, and secrets scan immediately after writes |
53
53
  | 9 | C | Stage 1 failure returns to implementation; Stage 2 does not start |
54
54
  | 10 | B | Handoffs include completed work, files modified, decisions, open questions, and mistakes |
55
55
 
@@ -61,17 +61,34 @@ This file contains answers for all module quizzes and the final certification ex
61
61
  |----------|--------|-------------|
62
62
  | 1 | C | Dockerfile uses Ubuntu 24.04 as the base image |
63
63
  | 2 | B | `.:/workspace:rw` mounts the current directory read-write |
64
- | 3 | A | Staged autonomy requires human approval before execution |
64
+ | 3 | B | Staged autonomy requires human approval before execution |
65
65
  | 4 | C | Default `LOKI_MAX_PARALLEL_AGENTS` is 10 |
66
- | 5 | A | `loki start --budget 10.00 ./prd.md` or `LOKI_BUDGET_LIMIT=10.00` |
67
- | 6 | D | The council votes on project completion to prevent premature termination |
68
- | 7 | B | The session auto-pauses when budget is exceeded |
66
+ | 5 | B | `loki start --budget 10.00 ./prd.md` or `LOKI_BUDGET_LIMIT=10.00` |
67
+ | 6 | B | The council votes on project completion to prevent premature termination |
68
+ | 7 | C | Default dashboard port is 57374 |
69
69
  | 8 | B | `LOKI_TLS_CERT` and `LOKI_TLS_KEY` environment variables |
70
- | 9 | A | Stagnation limit flags when N iterations pass with no git changes |
70
+ | 9 | B | Stagnation limit flags when N iterations pass with no git changes |
71
71
  | 10 | B | SANDBOX-SCOPED: `LOKI_ALLOWED_PATHS` restricts which host paths the Docker sandbox bind-mounts writable (`autonomy/sandbox.sh:1222`). It does NOT restrict agent writes inside the workspace. |
72
72
 
73
73
  ---
74
74
 
75
+ ## Module 5: Troubleshooting Quiz
76
+
77
+ | Question | Answer | Explanation |
78
+ |----------|--------|-------------|
79
+ | 1 | B | Closed, Open, Half-Open |
80
+ | 2 | C | 3 failures within 60 seconds open the breaker |
81
+ | 3 | C | 300 seconds (5 minutes) cooldown |
82
+ | 4 | B | After 5 failures the task moves to the dead-letter queue |
83
+ | 5 | B | A context clear is triggered and state is reloaded |
84
+ | 6 | B | `.loki/CONTINUITY.md` is read first |
85
+ | 7 | C | `loki reset retries` resets retry counters only |
86
+ | 8 | A | `LOKI_GATE_MOCK=false` disables the mock integrity gate (`autonomy/run.sh`) |
87
+ | 9 | C | After 10+ total attempts, or the same error with 3 different approaches |
88
+ | 10 | B | Hedging language ("probably", "should be fine") is the red flag |
89
+
90
+ ---
91
+
75
92
  ## Final Certification Exam
76
93
 
77
94
  | Question | Answer | Question | Answer |
@@ -17,12 +17,12 @@ D) Review, Approve, Release, Validate
17
17
 
18
18
  ---
19
19
 
20
- **Question 2:** How many specialized agent types does Loki Mode define?
20
+ **Question 2:** How many active providers does Loki Mode support?
21
21
 
22
- A) 8
23
- B) 25
24
- C) 41
25
- D) 50
22
+ A) 3
23
+ B) 4
24
+ C) 5
25
+ D) 6
26
26
 
27
27
  ---
28
28
 
@@ -83,9 +83,9 @@ D) That cyclomatic complexity stays under 10
83
83
  **Question 9:** Which AI provider supports full Loki Mode features including parallel agents and the Task tool?
84
84
 
85
85
  A) OpenAI Codex CLI
86
- B) Google Gemini CLI
86
+ B) Cline
87
87
  C) Claude Code
88
- D) All three providers equally
88
+ D) All providers equally
89
89
 
90
90
  ---
91
91
 
@@ -282,7 +282,7 @@ Developers who value open-source tooling, speed, and terminal-native workflows.
282
282
  | **Primary Focus** | Web automation | Mobile apps | Coding assistant | Coding assistant | PRD-to-deploy |
283
283
  | **Open Source / Source model** | Partial (Agent-E only) | No | Source-available | Yes (Apache-2.0) | Source-available (BUSL-1.1) |
284
284
  | **Multi-Provider** | Yes (OpenAI, Azure, Ollama) | Yes (Gemini, Claude) | Partial (Claude models via Bedrock/Vertex/Foundry) | No (GPT only) | Yes (5 providers, 3+ model families) |
285
- | **Multi-Agent** | Yes (2-agent model) | No | Yes (coordinated teams) | Yes (experimental) | Yes (41 agent types) |
285
+ | **Multi-Agent** | Yes (2-agent model) | No | Yes (coordinated teams) | Yes (experimental) | Yes (agent types) |
286
286
  | **Autonomous Iteration** | No (task-level) | No | Partial (/loop, /schedule) | No (requires prompting) | Yes (RARV loop + completion council) |
287
287
  | **SDLC Pipeline** | No | No | No | No | Yes (9 phases) |
288
288
  | **Code Review** | No | No | Yes (single-pass) | Yes (single-pass) | Yes (3-reviewer blind) |
@@ -457,7 +457,7 @@ This positioning highlights three unique capabilities no competitor offers toget
457
457
  | Source model | Open source (Apache-2.0) | Source-available (BUSL-1.1) |
458
458
  | Speed | 240+ tokens/sec | Depends on provider |
459
459
  | Providers | OpenAI only | 5 providers |
460
- | Multi-agent | Experimental (isolated) | 41 agent types, 8 domains |
460
+ | Multi-agent | Experimental (isolated) | Agent types across domains |
461
461
  | Quality | Single-pass review | 8-gate system |
462
462
  | **Loki Mode advantage:** | Autonomous pipeline, multi-provider, mature multi-agent |
463
463
 
@@ -542,7 +542,7 @@ Emergence AI charges enterprise contract rates for VPC deployment. Loki Mode is
542
542
  |--------|----------|----------|------------|
543
543
  | Claude Code Agent SDK enables custom SDLC pipelines | HIGH | 3-6 months | Deepen multi-provider advantage (Agent SDK is Claude-only); publish PRD-to-Deploy benchmarks that prove the integrated pipeline |
544
544
  | Claude Code adds autonomous mode natively | HIGH | 6-12 months | Quality gates, memory system, and multi-provider flexibility are structural advantages that cannot be replicated by adding a single feature |
545
- | Codex CLI adds orchestration layer | MEDIUM | 6-12 months | Codex is OpenAI-only; emphasize 41 agent types, cross-project memory, healing |
545
+ | Codex CLI adds orchestration layer | MEDIUM | 6-12 months | Codex is OpenAI-only; emphasize agent types, cross-project memory, healing |
546
546
  | New entrant builds "Rork for full-stack" | MEDIUM | 6-12 months | Add mobile PRD template; Loki Mode's quality gates differentiate from naive generation |
547
547
  | Open-source Auto-Claude gains traction | LOW | Ongoing | Already adopted key patterns (v3.4.0); maintain feature lead |
548
548
  | Enterprise CI/CD platforms (GitHub, GitLab) add native AI SDLC | HIGH | 12-18 months | Self-hosted, provider-agnostic positioning; these will be vendor-locked |
@@ -312,7 +312,7 @@ Replit Agent has evolved rapidly through four major versions:
312
312
  |-----------|:-----------:|:-----------:|:---------:|
313
313
  | Natural language to app | Yes | Yes | Yes (via PRD) |
314
314
  | Autonomous execution | 200 min sessions | Per-prompt | Unlimited (budget-gated) |
315
- | Multi-agent orchestration | Parallel agents (Agent 4) | No | Yes (41 agent types, 8 domains) |
315
+ | Multi-agent orchestration | Parallel agents (Agent 4) | No | Yes (agent types across domains) |
316
316
  | Self-testing loop | Yes | No | Yes (RARV cycle) |
317
317
  | Code review | No | No | Yes (3-reviewer blind review) |
318
318
  | Anti-sycophancy | No | No | Yes (devil's advocate) |
@@ -566,7 +566,7 @@ The term "vibe coding" (coined by Andrej Karpathy) has driven explosive growth i
566
566
  1. **Credit fatigue will drive users to transparent pricing** -- Loki Mode's BYOK model becomes more attractive as credit complaints mount
567
567
  2. **Production quality will become the differentiator** -- Prototype generation is commoditized; who can ship production code wins
568
568
  3. **Enterprise adoption requires compliance** -- SOC 2, on-premises, audit logs become table stakes
569
- 4. **Multi-agent orchestration is the next frontier** -- Replit Agent 4's parallel agents are primitive; Loki Mode's 41 agent types are ahead
569
+ 4. **Multi-agent orchestration is the next frontier** -- Replit Agent 4's parallel agents are primitive; Loki Mode's agent types are ahead
570
570
  5. **Brownfield/legacy support is underserved** -- No competitor addresses existing codebases; Loki Mode's healing system is unique
571
571
  6. **Self-hosted alternatives are emerging** -- Projects like December (fully local Lovable/Replit alternative with own LLM) and Tinykit (self-hosted AI app builder) validate the demand for local-first, privacy-preserving alternatives. Loki Mode is already positioned here.
572
572
 
@@ -164,7 +164,7 @@ For critical changes:
164
164
  - "Trillions of tokens" deployed
165
165
  - Hundreds of concurrent agents
166
166
 
167
- **Loki Mode:** Benchmarks only (SWE-bench, HumanEval). No 1M+ LoC projects demonstrated.
167
+ **Loki Mode:** No 1M+ LoC projects demonstrated.
168
168
 
169
169
  ### 2. Empirical Iteration
170
170
  Cursor learned through failure:
@@ -177,7 +177,7 @@ Cursor learned through failure:
177
177
  ### 3. Simplicity Principle
178
178
  > "A surprising amount of the system's behavior comes down to how we prompt the agents. The harness and models matter, but the prompts matter more."
179
179
 
180
- **Loki Mode:** More elaborate infrastructure (8 gates, 41 agent types, memory systems). May be over-engineered for some use cases.
180
+ **Loki Mode:** More elaborate infrastructure (8 gates, agent role prompts, memory systems). May be over-engineered for some use cases.
181
181
 
182
182
  ---
183
183
 
@@ -35,7 +35,7 @@ The dashboard automatically syncs with Loki Mode when it's running, polling `das
35
35
  The sidebar provides navigation and system status at a glance.
36
36
 
37
37
  #### Logo & Version
38
- - Loki Mode branding with current version (v5.40.0)
38
+ - Loki Mode branding with the running version
39
39
  - Version updates automatically from server state
40
40
 
41
41
  #### Theme Toggle
@@ -305,6 +305,18 @@ The dashboard includes several security measures:
305
305
  | **Python injection fix** | `completion-council.sh` sanitizes inputs to prevent code injection |
306
306
  | **CORS configuration** | Configurable via `LOKI_DASHBOARD_CORS` environment variable (default: localhost only) |
307
307
 
308
+ ### Host allowlist (DNS rebinding defense)
309
+
310
+ The dashboard refuses any request whose `Host` header is not loopback (`127.0.0.1`, `localhost`, `[::1]`) with 403, except `GET /health` and `GET /metrics`, which are always exempt so container probes (Host = pod IP) and scrapers work.
311
+
312
+ | Deployment | Behavior |
313
+ |------------|----------|
314
+ | Local default (bound to 127.0.0.1) | Only loopback Hosts; add others via `LOKI_DASHBOARD_ALLOWED_HOSTS` |
315
+ | Non-loopback bind (`0.0.0.0` or `LOKI_DASHBOARD_HOST` set) with `LOKI_ENTERPRISE_AUTH` or OIDC enabled | Any Host accepted; authentication is the boundary |
316
+ | Non-loopback bind without auth | Only loopback plus `LOKI_DASHBOARD_ALLOWED_HOSTS` |
317
+
318
+ `LOKI_DASHBOARD_ALLOWED_HOSTS` is a comma-separated list of host names (no port), e.g. `loki.example.com,10.0.0.5`. Helm: `config.dashboardAllowedHosts`. Terraform (aws-ecs): `dashboard_allowed_hosts`.
319
+
308
320
  ---
309
321
 
310
322
  ## Technical Architecture
@@ -465,6 +477,6 @@ Useful for:
465
477
  ## Related Documentation
466
478
 
467
479
  - [Core Workflow](../references/core-workflow.md) - RARV cycle details
468
- - [Agent Types](../references/agent-types.md) - 41 agent definitions
480
+ - [Agent Types](../references/agent-types.md) - Agent role definitions
469
481
  - [Quality Control](../references/quality-control.md) - Quality gates system
470
482
  - [Memory System](../references/memory-system.md) - Memory architecture
@@ -21,9 +21,9 @@ regardless of vote count. D13 requires every council/review agent to pin its
21
21
  model explicitly rather than inherit the session model.
22
22
 
23
23
  ## Legacy System Healing (introduced v6.67.0)
24
- - **Current in v7.18.0**: Still active, no breaking changes since v6.67.0. Note: in v7.4.20 the `legacy-healing-auditor` reviewer was gated on healing-mode signals to avoid firing on non-healing changes.
24
+ - **Status**: Still active, no breaking changes since v6.67.0. Note: in v7.4.20 the `legacy-healing-auditor` reviewer was gated on healing-mode signals to avoid firing on non-healing changes.
25
25
  - **Inspired by**: Amazon AGI Lab's "How Agentic AI Helps Heal Systems We Can't Replace"
26
- - **CLI**: `loki heal <path> [--phase archaeology|stabilize|isolate|modernize|validate]` (`autonomy/loki:9916`)
26
+ - **CLI**: `loki heal <path> [--phase archaeology|stabilize|isolate|modernize|validate]` (`autonomy/loki` `cmd_heal`)
27
27
  - **Principles**: Friction-as-semantics, failure-first learning, universal adapters, incremental healing, institutional knowledge preservation
28
28
  - **Artifacts**: `.loki/healing/` (friction-map.json, failure-modes.json, institutional-knowledge.md)
29
29
  - **Review**: `legacy-healing-auditor` specialist added to code review pool (gated)
@@ -33,7 +33,7 @@ skills/ # On-demand skill modules (v3.0 architecture)
33
33
  testing.md # Playwright, E2E, property-based testing
34
34
  production.md # HN patterns, CI/CD, context management
35
35
  troubleshooting.md # Common issues, red flags, fallbacks
36
- agents.md # 41 agent types, structured prompting
36
+ agents.md # Agent types, structured prompting
37
37
  artifacts.md # Generation, code transformation
38
38
  patterns-advanced.md # OptiMind, k8s-valkey, Constitutional AI
39
39
  parallel-workflows.md # Git worktrees, parallel streams, auto-merge
@@ -1,4 +1,4 @@
1
- # Loki Mode v5.51.0 -- Enterprise Architecture
1
+ # Loki Mode Enterprise Architecture
2
2
 
3
3
  ## Overview
4
4
 
@@ -27,14 +27,14 @@ Loki Mode's enterprise layer is a non-breaking extension to the core autonomous
27
27
  | | OTEL Bridge | | Policy Engine | | Audit Trail | |
28
28
  | | (otel.js) | | (engine.js) | | (log.js) | |
29
29
  | | Spans, Metrics | | YAML/JSON rules | | Hash-chained | |
30
- | | OTLP/HTTP export | | 4 enf. points | | JSONL, syslog | |
30
+ | | OTLP/HTTP export | | policy checks | | JSONL, syslog | |
31
31
  | +--------+---------+ +--------+---------+ +--------+---------+ |
32
32
  | | | | |
33
33
  | +--------v---------+ +--------v---------+ +--------v---------+ |
34
34
  | | Span Helpers | | Cost Controller | | Compliance | |
35
35
  | | (spans.js) | | (cost.js) | | (compliance.js) | |
36
- | | RARV, agents, | | Token budgets, | | SOC 2, ISO 27001 | |
37
- | | quality gates | | alerts | | GDPR reports | |
36
+ | | RARV, agents, | | Token budgets, | | Audit evidence | |
37
+ | | quality gates | | alerts | | report templates | |
38
38
  | +-------------------+ +--------+---------+ +--------+---------+ |
39
39
  | | | |
40
40
  | +------------------+ +--------v---------+ +--------v---------+ |
@@ -115,9 +115,12 @@ The `OTLPExporter` class batches spans (flush at 100 or every 5 seconds) and sen
115
115
 
116
116
  **Source:** `src/policies/engine.js` (core), `src/policies/index.js` (public API), `src/policies/types.js` (validators)
117
117
 
118
- The policy engine provides governance-as-code through declarative policy files. Policies are loaded from `.loki/policies.json` or `.loki/policies.yaml` and evaluated synchronously at enforcement points.
118
+ The policy engine provides governance-as-code through declarative policy files. Policies are loaded from `.loki/policies.json` or `.loki/policies.yaml` and evaluated synchronously.
119
119
 
120
- **Enforcement Points:**
120
+ **Policy points.** The engine accepts the four points below, but at runtime
121
+ `autonomy/run.sh` evaluates only `pre_execution`. The other three are not
122
+ invoked by Loki itself; they are available only to code that calls the engine
123
+ API directly.
121
124
 
122
125
  | Point | Purpose | Context Fields |
123
126
  |-------|---------|----------------|
@@ -223,14 +226,14 @@ All integrations extend `IntegrationAdapter`, which provides:
223
226
  **Jira Integration:** `src/integrations/jira/`
224
227
 
225
228
  - `api-client.js` -- Jira Cloud REST API v3 client with Basic Auth, rate limiting, 10MB response cap
226
- - `sync-manager.js` -- Bidirectional sync: epic-to-PRD import, RARV-to-Jira status mapping, quality report posting
229
+ - `sync-manager.js` -- Epic-to-PRD import, RARV-to-Jira status mapping, quality report posting
227
230
  - `epic-converter.js` -- Converts Jira epics with children to PRD format
228
231
  - `webhook-handler.js` -- Handles inbound Jira webhooks
229
232
 
230
233
  **Linear Integration:** `src/integrations/linear/`
231
234
 
232
235
  - `client.js` -- Linear GraphQL API client with rate limit tracking, auto-retry
233
- - `sync.js` -- Bidirectional sync using the reusable adapter pattern
236
+ - `sync.js` -- Linear sync using the reusable adapter pattern
234
237
  - `config.js` -- Config loader from `.loki/config.yaml` with minimal YAML parser
235
238
 
236
239
  **GitHub Integration:** `src/integrations/github/`