loki-mode 9.8.0 → 9.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/README.md +19 -14
  2. package/SKILL.md +3 -2
  3. package/VERSION +1 -1
  4. package/autonomy/loki +122 -1
  5. package/autonomy/run.sh +49 -2
  6. package/dashboard/__init__.py +1 -1
  7. package/dashboard/api_evidence.py +411 -0
  8. package/dashboard/api_operator.py +283 -0
  9. package/dashboard/api_phases.py +262 -0
  10. package/dashboard/api_releases.py +242 -0
  11. package/dashboard/api_runs.py +477 -0
  12. package/dashboard/api_tests.py +444 -0
  13. package/dashboard/api_v2.py +47 -1
  14. package/dashboard/server.py +54 -0
  15. package/dashboard/static/index.html +246 -135
  16. package/docs/ARCHITECTURE-OVERVIEW.md +5 -3
  17. package/docs/CAPABILITY-BACKLOG.md +53 -0
  18. package/docs/COMPARISON.md +2 -2
  19. package/docs/COMPETITIVE-ANALYSIS.md +1 -1
  20. package/docs/COMPETITIVE-SCORECARD.md +422 -0
  21. package/docs/DASHBOARD-9.12-EVIDENCE.md +97 -0
  22. package/docs/DASHBOARD-ARCHITECTURE.md +423 -0
  23. package/docs/DEMOS.md +21 -23
  24. package/docs/HANDOFF-2026-08-03.md +439 -0
  25. package/docs/INSTALLATION.md +17 -10
  26. package/docs/OUTCOME-FRONTIER.md +536 -0
  27. package/docs/PROMPT-ABLATION-RESULT.md +97 -0
  28. package/docs/TOOLS.md +800 -0
  29. package/docs/alternative-installations.md +2 -3
  30. package/docs/audit-logging.md +44 -35
  31. package/docs/authentication.md +13 -2
  32. package/docs/authorization.md +87 -81
  33. package/docs/git-workflow.md +6 -3
  34. package/docs/metrics.md +15 -16
  35. package/docs/network-security.md +16 -13
  36. package/docs/openclaw-integration.md +36 -556
  37. package/docs/show-hn-post.md +2 -2
  38. package/docs/siem-integration.md +39 -36
  39. package/loki-ts/dist/loki.js +18 -18
  40. package/mcp/__init__.py +1 -1
  41. package/package.json +2 -2
  42. package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
  43. package/references/confidence-routing.md +18 -1
  44. package/references/invariant-checks.md +13 -8
  45. package/references/magic-rarv-integration.md +0 -1
  46. package/references/multi-provider.md +27 -5
  47. package/skills/healing.md +4 -2
  48. package/tools/audit-docs.py +488 -0
  49. package/tools/baseline-pin.py +19 -1
  50. package/tools/calibration-audit.py +523 -0
  51. package/tools/ci-gate.py +19 -1
  52. package/tools/cost-forecast.py +344 -0
  53. package/tools/cost-guard.py +19 -1
  54. package/tools/cost-history.py +19 -1
  55. package/tools/cost-per-outcome.py +394 -0
  56. package/tools/estimate-run.py +19 -1
  57. package/tools/evidence-freshness.py +307 -0
  58. package/tools/gate-init.py +19 -1
  59. package/tools/gate-report.py +19 -1
  60. package/tools/gate-simulate.py +570 -0
  61. package/tools/gate-trend.py +354 -0
  62. package/tools/model-advisor.py +52 -1
  63. package/tools/policy-load.py +19 -1
  64. package/tools/prompt-cost.py +363 -0
  65. package/tools/prompt-diff.py +448 -0
  66. package/tools/prompt-lint.py +448 -0
  67. package/tools/receipt-bundle.py +72 -2
  68. package/tools/receipt-diff.py +19 -1
  69. package/tools/receipt-find.py +19 -1
  70. package/tools/receipt-stats.py +380 -0
  71. package/tools/receipt-timeline.py +478 -0
  72. package/tools/receipt-verify-batch.py +291 -0
  73. package/tools/run-replay.py +19 -1
  74. package/tools/signing-status.py +19 -1
  75. package/tools/token-guard.py +19 -1
  76. package/tools/token-tax.py +375 -0
  77. package/tools/tool-index.py +19 -1
  78. package/tools/verification-tax.py +277 -0
  79. package/tools/verify-chain.py +361 -0
@@ -41,7 +41,10 @@ loki start ./prd.md
41
41
  | `LOKI_AUDIT_SYSLOG_PORT` | `514` | Syslog server port |
42
42
  | `LOKI_AUDIT_SYSLOG_PROTO` | `udp` | Protocol: `udp` or `tcp` |
43
43
  | `LOKI_SYSLOG_FACILITY` | `local0` | Syslog facility (local0-local7) |
44
- | `LOKI_SYSLOG_SEVERITY` | `info` | Minimum severity to forward |
44
+
45
+ There is no minimum-severity filter: `LOKI_SYSLOG_SEVERITY` appeared in an
46
+ earlier version of this page and is not read by any code. Everything audited is
47
+ forwarded.
45
48
 
46
49
  ### Configuration File
47
50
 
@@ -314,9 +317,13 @@ parser.fields.actor=actor
314
317
 
315
318
  ### ArcSight CEF Format
316
319
 
320
+ CEF formatting lives in `src/observability/siem-export.js`. There is no
321
+ `LOKI_SYSLOG_FORMAT` switch (an earlier version of this page listed one); the
322
+ vendor and product header fields are the parts you can override:
323
+
317
324
  ```bash
318
- # Enable CEF output format
319
- export LOKI_SYSLOG_FORMAT=cef
325
+ export LOKI_CEF_VENDOR=Autonomi
326
+ export LOKI_CEF_PRODUCT="Loki Mode"
320
327
 
321
328
  # CEF message example:
322
329
  # CEF:0|Autonomi|Loki Mode|5.42.2|session.start|Session Started|3|
@@ -467,45 +474,40 @@ enterprise:
467
474
 
468
475
  ## Compliance Reporting
469
476
 
470
- ### SOC2 Reports
477
+ **Loki does not generate framework-specific compliance reports.** An earlier
478
+ version of this page showed `loki enterprise audit export --format soc2|hipaa|pci`
479
+ and `loki compliance report --framework <name>`. Neither exists:
480
+ `loki enterprise audit` has only `summary` and `tail`, and `loki compliance`
481
+ has only `snapshot`.
471
482
 
472
- ```bash
473
- # Generate SOC2 audit report
474
- loki enterprise audit export \
475
- --from 2026-01-01 \
476
- --to 2026-12-31 \
477
- --format soc2 \
478
- --output soc2-audit-report.pdf
483
+ What Loki gives you is the raw evidence: a hash-chained, newline-delimited JSON
484
+ audit log, plus the SIEM forwarding configured above. Build framework reporting
485
+ in your SIEM, where the correlation and retention rules already live.
479
486
 
480
- # Trust Services Criteria coverage
481
- loki compliance report --framework soc2
482
- ```
483
-
484
- ### HIPAA Reports
487
+ To pull an evidence slice locally for an auditor:
485
488
 
486
489
  ```bash
487
- # PHI access audit trail
488
- loki enterprise audit search \
489
- --event data.access \
490
- --tag phi \
491
- --from 2026-01-01 \
492
- --format hipaa
490
+ AUDIT=~/.loki/dashboard/audit/audit.jsonl
491
+
492
+ # Access events in a date range (SOC2 / HIPAA evidence)
493
+ jq -s 'map(select(.timestamp >= "2026-01-01" and .timestamp <= "2026-12-31"))' \
494
+ "$AUDIT" > audit-evidence.json
493
495
 
494
- # Administrative safeguards report
495
- loki compliance report --framework hipaa --section administrative
496
+ # Token lifecycle events (PCI-DSS Requirement 8)
497
+ jq -c 'select(.event | startswith("auth.token."))' "$AUDIT"
496
498
  ```
497
499
 
498
- ### PCI-DSS Reports
500
+ Verify the hash chain before handing the file over. There is no
501
+ `loki audit verify` subcommand (`loki audit` has `log`, `count`, and `scan`);
502
+ the chain verifier is a Python function in `dashboard/audit.py`:
499
503
 
500
504
  ```bash
501
- # User access report (Requirement 8)
502
- loki enterprise audit search \
503
- --event auth.token.create \
504
- --event auth.token.revoke \
505
- --format pci
506
-
507
- # Audit log review (Requirement 10)
508
- loki compliance report --framework pci --requirement 10
505
+ python3 -c "
506
+ from dashboard.audit import verify_log_integrity
507
+ import json, os
508
+ print(json.dumps(verify_log_integrity(
509
+ os.path.expanduser('~/.loki/dashboard/audit/audit.jsonl')), indent=2))
510
+ "
509
511
  ```
510
512
 
511
513
  ## Alerting
@@ -618,9 +620,10 @@ find ~/.loki/dashboard/audit/ -type f -exec wc -l {} + | awk '{sum+=$1} END {pri
618
620
  # Monitor syslog queue
619
621
  ss -tunap | grep :514
620
622
 
621
- # Reduce log volume
622
- export LOKI_AUDIT_LEVEL=warning
623
- export LOKI_AUDIT_EXCLUDE_EVENTS=api.request,api.response
623
+ # Bound local log volume via rotation (there is no severity filter or
624
+ # per-event exclude list; audit logging is on or off)
625
+ export LOKI_AUDIT_MAX_SIZE_MB=5
626
+ export LOKI_AUDIT_MAX_FILES=4
624
627
  ```
625
628
 
626
629
  ## Examples