OpenclawSAFE
Autonomous software factory. Give it a GitHub issue, a spec or a one-line task; get back a pull request with a signed receipt anyone can re-check offline. Runs on your machine with your own keys: Claude, Codex, OpenCode.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Run Loki Mode autonomous SDLC sessions from any OpenClaw channel (Slack, Discord, Teams, web).
Installation
- Install Loki Mode CLI:
npm install -g loki-mode # or brew install asklokesh/tap/loki-mode
- Copy skill to OpenClaw workspace:
cp -r integrations/openclaw/ ~/.openclaw/workspace/skills/loki-mode/
- Configure API keys in the OpenClaw environment (ANTHROPICAPIKEY, OPENAIAPIKEY, or GOOGLEAPIKEY).
Usage
From any connected channel, the agent will invoke Loki Mode when:
- You ask it to "build" or "implement" something from a PRD
- You say "loki mode" with a project reference
- You provide requirements for autonomous development
Architecture
Channel (Slack/Discord/Web) | v OpenClaw Gateway --> Agent routes to loki-mode skill | v loki start --bg --yes (background process) | v Poll loop: loki status --json (every 30s) | v Progress messages back to channel
Helper Scripts
Two helper scripts are provided in scripts/ for structured status polling and formatting:
poll-status.sh [workdir]-- Callsloki status --jsonand enriches the output with budget and council data from.loki/flat files. Returns a single JSON object.format-progress.sh-- Reads the JSON output frompoll-status.shvia stdin and produces a human-readable multi-line progress message suitable for channel posting.
Example pipeline:
./scripts/poll-status.sh /path/to/project | ./scripts/format-progress.sh
Configuration
Phase 2: Bridge Daemon
ddd6fb49d92aOBSERVED · 2026-10-12Install
Commands as the repository documents them. They are shown, not run.
npm install -g loki-mode
Host compatibility
What the documentation claims. We have not run a compatibility test.
| Host | Status | Notes |
|---|---|---|
| claude-code | mentioned | |
| codex | mentioned | |
| gemini-cli | mentioned | |
| openclaw | mentioned |
What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
---
name: loki-mode
description: "Launch Loki Mode autonomous SDLC agent. Handles PRD-to-deployment with minimal human intervention. Invoke for multi-phase development tasks, bug fixing campaigns, or full product builds."
---
# Loki Mode - OpenClaw Skill
## When to use
- User asks to "build", "implement", or "develop" a feature from a PRD
- User provides a requirements document and wants autonomous execution
- User says "loki mode" or references autonomous development
- User wants to run a full SDLC cycle on a codebase
## Prerequisites
- `loki` CLI installed on the host (via `npm install -g loki-mode` or Homebrew)
- One of: Claude Code, Codex CLI, or Gemini CLI installed
- Corresponding API key set (ANTHROPIC_API_KEY, OPENAI_API_KEY, or GOOGLE_API_KEY)
## How to invoke
### Start a session
Use the bash tool with background mode:
```
bash(command: "loki start <prd-path> --bg --yes --no-dashboard", pty: true, background: true, workdir: "<project-dir>")
```
Key flags:
- `--bg`: Background mode (session outlives the tool call)
- `--yes`: Skip confirmation prompts
- `--no-dashboard`: Avoid port conflicts in sandboxed environments
- `--provider <claude|codex|gemini>`: Select AI provider (default: claude)
- `--budget <amount>`: Set cost limit in USD (auto-pause when exceeded)
### Monitor progress
Poll status every 30 seconds:
```
bash(command: "loki status --json", workdir: "<project-dir>")
```
The JSON output contains:
- `version`: Loki Mode version string
- `status`: inactive, running, paused, stopped, completed, unknown
- `phase`: Current SDLC phase (e.g., BOOTSTRAP, DISCOVERY, ARCHITECTURE, DEVELOPMENT, QA, DEPLOYMENT)
- `iteration`: Current iteration number
- `provider`: Which AI provider is active (claude, codex, gemini)
- `pid`: Process ID of the running session (null if not running)
- `elapsed_time`: Seconds since session start
- `dashboard_url`: URL of the web dashboard (null if disabled)
- `task_counts`: Object with `total`, `completed`, `failed`, `pending` counts
For budget tracking (not in JSON output), read the budget file directly:
```
bash(command: "cat .loki/metrics/budget.json 2>/dev/null || echo '{}'", workdir: "<project-dir>")
```
Budget JSON fields: `budget_limit`, `budget_used`
### Report progress to channel
After each poll, summarize changes:
- Phase transitions ("Moved from ARCHITECTURE to DEVELOPMENT")
- Task completion counts ("12/20 tasks complete, 0 failed")
- Elapsed time ("Running for 45 minutes")
- Error states that need attention (failed tasks > 0, status is unknown)
If budget tracking is active, include cost in updates:
- "Estimated cost: $4.50 / $50.00 budget"
### Control commands
- Pause: `bash(command: "loki pause", workdir: "<project-dir>")`
- Resume: `bash(command: "loki resume", workdir: "<project-dir>")`
- Stop: `bash(command: "loki stop", workdir: "<project-dir>")`
- Status: `bash(command: "loki status", workdir: "<project-dir>")`
- Logs: `bash(command: "loki logs --tail 50", workdir: "<project-dir>")`
### Session complete
When status becomes "stopped" or "completed":
1. Run `loki status --json` for final summary
2. Run `git log --oneline -20` to show commits made
3. Report final task counts, elapsed time, and duration
4. If council verdict exists, include it: `cat .loki/council/report.md`
## Critical rules
- ALWAYS use --bg flag (session must outlive the tool call)
- ALWAYS use --yes flag (no confirmation prompts in non-interactive channels)
- NEVER run loki in the OpenClaw workspace directory itself
- Poll status rather than watching stdout (background mode detaches)
- If session crashes, check `loki logs` before restarting
- Respect budget limits -- include cost in every progress update when tracking is active
- The --no-dashboard flag is recommended to avoid port conflicts in sandboxed environmentsTrust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- declared (2 observation(s))
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (0)
No findings outside the package's declared scope.
Gates applied: no_behavioural_pass.
ddd6fb49d92afull audit observations/trust-audit/skill/asklokesh__openclaw.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | ddd6fb49d92a | SAFE | B | 89 | first audit |
Questions
What does the Openclaw skill do?
Autonomous software factory. Give it a GitHub issue, a spec or a one-line task; get back a pull request with a signed receipt anyone can re-check offline. Runs on your machine with your own keys: Claude, Codex, OpenCode.
Is Openclaw safe to install?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.
What can Openclaw access on my machine?
The audit observed that it reaches the network. Each of those is consistent with what it says it does. Secrets in the source: none found.
Which assistants does Openclaw work with?
Its documentation mentions claude-code, codex, gemini-cli and openclaw. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (ddd6fb49d92a), read on 2026-10-12. The repository is watched, and a new audit runs when it changes — this is the first audit.