Why Lyrie?
Every AI agent platform treats security as an afterthought. Lyrie treats it as the foundation — and ships the receipts. Every advisory we publish on research.lyrie.ai is backed by a reproducible exploit lab and detection rules in this repo.
Cybersecurity isn't a plugin — it's Layer 1.
Highlights (current main, v0.3.0+)
- 🛡️ The Shield Doctrine — every layer of Lyrie that touches untrusted text passes a Shield gate. (
docs/shield-doctrine.md)
- 🔍 Lyrie Attack-Surface Mapper (
/understand) — maps entry points, trust boundaries, tainted data flows, and ranked risk hotspots before any scanner runs.
- 🧪 Lyrie Stages A–F Validator — every finding earns its severity through six validation gates. Auto-PoCs for confirmed vulns. Auto-remediation summaries. Kills false positives at the source.
- 🌐 Lyrie Multi-Language Vulnerability Scanners — 8 purpose-built scanners (JS / TS / Python / Go / PHP / Ruby / C / C++) with 53 Lyrie-original detection rules covering OWASP Top 10 + CWE classics.
- 📡 Lyrie Threat-Intel feed — every PR finding auto-attributed against research.lyrie.ai, CISA-KEV-aligned, with Lyrie Verdict surfaced inline. Bumps severity to critical when KEV-listed.
- 🔍 Lyrie HTTP Proxy — capture, classify, replay, and fuzz HTTP exchanges. 9 security-signal detectors (missing security headers, weak cookie flags, open CORS, secrets in responses, GraphQL introspection, auth tokens in URLs, verbose 5xx errors, and more). 7 structured mutators for replay-based testing.
- 🆓 Lyrie OSS-Scan service — free public scan at
research.lyrie.ai/scan. Submit any GitHub / GitLab / Bitbucket / Codeberg repo URL, get a Lyrie report (Mapper + Scanners + Stages A–F + auto-PoC) in seconds.
- 🚀 Lyrie Pentest GitHub Action — Shield-scans every PR, posts a single-comment-per-PR Markdown summary, uploads SARIF to Code Scanning, blocks merges on
fail-on threshold.
- 🧠 FTS5 cross-session memory — bm25-ranked recall + LLM-summarized session digests, every snippet Shield-gated.
- ✏️ Diff-view edits with approval gates —
apply_diff produces unified diffs, never overwrites whole files; Shield scans every patch before it touches disk.
- 🔌 MCP adapter (
@lyrie/mcp) — Lyrie speaks fluent Model Context Protocol both as client and server.
- 🚪 DM pairing — unknown senders can't reach the agent without operator approval. Three modes:
open / pairing / closed.
- 🩺
lyrie doctor — read-only environment, channel, and security self-diagnostic with --json for CI.
🆚 Lyrie vs the field
Live GitHub stars as of 2026-04-27.
vs autonomous-agent platforms
Lyrie is a 30K-LOC, MIT-licensed, Shield-native autonomous agent. Competitors here are general-purpose agent platforms:
| Autonomous agent loop | ✅ | ✅ | ❌ | ✅ | ✅ |
| Multi-channel inbox (TG/WA/Discord/Slack/Signal/iMessage) | ✅ (23+) | ✅ (6) | ❌ | ❌ | ✅ (8) |
| Self-improving skills | Skills catalog | ✅ Learns from use | ❌ | ❌ | ✅ + skill-creator |
| Persistent cross-session memory | LanceDB / sections | ✅ Trajectory + graph | ❌ | ❌ | ✅ SQLite + FTS5 |
| Self-healing memory | ❌ | Partial | ❌ | ❌ | ✅ Validator + repair |
| Multi-model + intelligent routing | ✅ | ✅ (200+ via OpenRouter) | Anthropic only | Multiple | ✅ (auto-routed by task) |
| Diff-view edits with approval | ❌ | ❌ | ❌ | ✅ | ✅ + Shield-on-patch |
| MCP adapter (client + server) | ✅ client | ❌ | ✅ client | Partial | ✅ client + server |
| Native cybersecurity layer | ❌ | ❌ | ❌ | ❌ | ✅ The Shield + Doctrine |
Built-in pentest commands (/scan /pentest /understand /apiscan) | ❌ | ❌ | ❌ | ❌ | ✅ |
| GitHub Action for PR scans | ❌ | ❌ | ❌ | ❌ | ✅ SARIF + diff-scope |
| Real-time threat-intel feed (KEV-driven) | ❌ | ❌ | ❌ | ❌ | ✅ research.lyrie.ai |
| Reproducible exploit labs in-repo | ❌ | ❌ | ❌ | ❌ | ✅ 9+ CVE labs |
| HTTP proxy + replay + mutators | ❌ | ❌ | ❌ | ❌ | ✅ 9 signal detectors |
| Sub-agent orchestration | ✅ | ✅ | ❌ | ❌ | ✅ + role-based fleet |
| Cron / scheduled jobs | ✅ | ✅ | ❌ | ❌ | ✅ + heartbeat |
| Audit-friendly footprint | 430K+ LOC | ~30K LOC | Closed | ~50K LOC | <30K LOC, MIT, fully auditable |
| Built by | OpenClaw | Nous Research | Anthropic | SST | OTT Cybersecurity LLC |
The headline: OpenClaw and Hermes are great agents. Claude Code and opencode are great coding assistants. None of them was built to defend you while it works. Lyrie is. Cybersecurity isn't a plugin — it's Layer 1.
vs AI-pentest agents
Lyrie also competes head-to-head with the AI-pentest crowd. Here we trade ecosystem maturity for depth + Shield Doctrine + reproducibility:
| GitHub Action for PR scans | ✅ | ❌ | ❌ | ❌ | ✅ + SARIF + diff-scope |
Attack-surface mapper (/understand) | ❌ | ❌ | ✅ | ❌ | ✅ Lyrie Mapper |
| Stages A–F validation | ❌ | ❌ | ✅ (A-D only) | ❌ | ✅ A–F + auto-PoC + auto-remediation |
| Multi-language scanners (JS / Py / Go / PHP / Ruby / C/C++) | Partial | Partial | Partial | Partial | ✅ 8 scanners, 53 rules |
| Threat-intel feed (KEV-driven) | ❌ | ❌ | ❌ | ❌ | ✅ research.lyrie.ai |
| HTTP proxy + replay + mutators | ✅ | ❌ | ❌ | ❌ | ✅ 9 signal detectors |
| Free OSS-scan service for any repo | ❌ | ❌ | ❌ | ❌ | ✅ research.lyrie.ai/scan |
| Reproducible exploit labs in-repo | ❌ | ❌ | ❌ | ❌ | ✅ 9+ CVE labs |
| Native cybersecurity Shield (defends itself) | ❌ | ❌ | ❌ | ❌ | ✅ The Shield Doctrine |
| Multi-channel inbox (TG/WA/Discord/Slack) | ❌ | ❌ | ❌ | ❌ | ✅ 8 channels |
| Tests passing | — | — | — | — | 259 / 0 / 669 expect()s |
| License | Apache 2.0 | MIT | MIT | MIT + paid | MIT |
| Built by | usestrix | GreyDGL | Gadi Evron | Alias Robotics | OTT Cybersecurity LLC |
The headline: Strix is a sharp single-purpose pentest tool. Lyrie is a complete agent platform that includes a sharper pentest tool, a defensive Shield layer the others lack, a verified threat-intel feed, and reproducible exploit labs that prove every claim.
Want a deep comparison? See lyrie/research/integration/lyrie-absorption-roadmap-2026-04-27.md for the 19-competitor recon matrix.
⚡ Install
One-line install
curl -fsSL https://lyrie.ai/install.sh | bash
irm https://lyrie.ai/install.ps1 | iex
Python SDK
pip install lyrie-agent
from lyrie import Shield, AttackSurfaceMapper, StagesValidator, scan_files
shield = Shield()
print(shield.scan_recalled("Ignore all previous instructions").blocked)
surface = AttackSurfaceMapper(root="./my-repo").run()
report = scan_files(root="./my-repo")
validator = StagesValidator()
for f in report.findings:
v = validator.validate(f, surface=surface)
if v.confirmed:
print(f"✓ {f.title} confidence={v.confidence:.0%}")
Full SDK docs: sdk/python/README.md.
From source
git clone https://github.com/overthetopseo/lyrie-agent.git
cd lyrie-agent
bun install
bun run doctor
bun start
Lyrie ships with a Bun-first toolchain (Node 20+ also supported).
🚀 Lyrie Pentest Action
Drop Lyrie into any repo's CI:
name: Lyrie Pentest
on: [pull_request]
permissions:
contents: read
pull-requests: write
security-events: write
jobs:
lyrie:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with: { fetch-depth: 0 }
- uses: overthetopseo/lyrie-agent/action@v1
with:
scan-mode: quick
scope: diff
fail-on: high
anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
You get:
- Diff-scoped Shield + Mapper scan — only PR-changed files, zero noise on untouched code
- Stages A–F validation — false positives killed before they hit the report
- Single PR comment that updates in place (no spam)
- SARIF auto-uploaded to GitHub Code Scanning (findings show as PR annotations)
- Workflow artifact with full
report.md + report.json + lyrie.sarif
- Job summary rendered into the GitHub Actions step summary tab
- Non-zero exit on threshold — block merges when configured as a required check
Full docs: action/README.md.
Other CI/CD platforms? Drop-in templates for GitLab CI, Jenkins, and CircleCI live in action/templates/. Same Lyrie scan, same Shield Doctrine, same SARIF — anywhere your code builds.
💬 Where Lyrie talks to you
Lyrie ships a multi-channel gateway so the agent reaches you on whatever your team already uses — not just Slack-or-die.
| Telegram | ✅ production | Bot API + inline buttons + media |
| WhatsApp | ✅ production | Business Cloud API |
| Discord | ✅ production | Gateway v10 + buttons |
| Slack | ✅ v0.3.2 | Events API + Socket Mode + Block Kit |
| Matrix | ✅ v0.3.2 | Federated; matrix.org / Element / Synapse |
| Mattermost | ✅ v0.3.2 | Self-hosted, Slack-compatible interactives |
| IRC | ✅ v0.3.2 | RFC 2812 + IRCv3 server-time + SASL |
| Feishu / Lark | ✅ v0.3.2 | 飞书 mainland + Lark international from one adapter |
| Rocket.Chat | ✅ v0.3.2 | Self-hosted, EU/LATAM enterprise default |
| WebChat | ✅ v0.3.2 | The widget Lyrie owns end-to-end (lyrie.ai) |
| Signal | 🔭 roadmap | |
Every channel implements the same ChannelBot contract — unified UnifiedMessage in, unified UnifiedResponse out. Same Shield Doctrine, same DM-pairing policy, same engine.
☁️ Where Lyrie runs
Lyrie scans run somewhere. Pick where:
| Local (default) | Caller has Bun + repo | zero config |
| Daytona | Ephemeral devboxes / sandboxed PR scans | DAYTONA_API_KEY |
| Modal | Pay-per-second serverless burst | MODAL_TOKEN_ID + MODAL_TOKEN_SECRET |
Switch at runtime:
LYRIE_BACKEND=modal bun run action/runner.ts
LYRIE_BACKEND=daytona bun run action/runner.ts
LYRIE_BACKEND=local bun run action/runner.ts
Inspect what's wired up:
bun run backend status
bun run backend list
bun run backend show modal
bun run backend preflight
Deployment recipes (Modal Python function + Daytona devcontainer): deploy/.
Same contract everywhere. Every backend returns the same BackendRunResult shape — same SARIF, same Markdown, same Shield Doctrine — different host. No Docker. No vendor lock-in.
🏛 Architecture
┌─────────────────────────────────────────────────────────────┐
│ LAYER 4 · INTERFACE │
│ CLI · Web · Desktop · iOS · Android · 23+ channels │
├─────────────────────────────────────────────────────────────┤
│ LAYER 3 · AGENT ENGINE │
│ Multi-model routing · Sub-agent fleet │
│ Skill manager · Self-improving loop │
│ EditEngine (diff-view + approval) │
│ MCP client + server · Tool executor │
├─────────────────────────────────────────────────────────────┤
│ LAYER 2 · MEMORY CORE │
│ SQLite + WAL · FTS5 cross-session recall │
│ Self-healing · Hourly auto-backup │
│ Sectioned dream cycle · Pluggable summarizer │
├─────────────────────────────────────────────────────────────┤
│ LAYER 1 · THE SHIELD │
│ Real-time threat detection · Prompt-injection gate │
│ DM pairing · Path scoping · Tool-call validation │
│ Lyrie Attack-Surface Mapper · Stages A–F Validator │
│ KEV-driven threat-intel feed (research.lyrie.ai) │
└─────────────────────────────────────────────────────────────┘
The Shield is not a wrapper. It runs underneath every other layer.
🛡️ The Shield Doctrine
Every Lyrie surface that touches untrusted text passes a Shield gate. No exceptions, no carve-outs.
| Channel inbound (DMs) | evaluateDmPolicy (router) | ✅ |
| Pairing greeting | DmPairingManager.greet → scanInbound | ✅ |
| Memory recall | searchAcrossSessions → scanRecalled | ✅ |
| MCP tool results | McpRegistry.shieldFilter | ✅ |
Tool output (untrustedOutput=true) | ToolExecutor.shieldFilterOutput | ✅ |
| Skill output | SkillManager.shieldFilter | ✅ |
| Diff-view applied edits | EditEngine.plan → scanRecalled | ✅ |
| Attack-surface evidence | buildAttackSurface → sanitizeEvidence | ✅ |
| Pentest scan target input | runner.ts → scanInbound | ✅ |
Full rule: docs/shield-doctrine.md.
📦 Repo layout
packages/core/ | Lyrie agent core — engine, memory, skills, tools, MCP, attack-surface mapper, Stages A–F validator, EditEngine, Shield Guard |
packages/gateway/ | Multi-channel gateway (Telegram / WhatsApp / Discord) with DM pairing |
packages/mcp/ | @lyrie/mcp — Model Context Protocol adapter |
packages/shield/ | Lyrie Shield — Rust cybersecurity engine |
packages/omega-suite/ | Lyrie OMEGA — autonomous security intelligence backend powering research.lyrie.ai |
packages/ui/ | Lyrie war-room dashboard (Next.js) |
action/ | Lyrie Pentest GitHub Action |
research/ | Reproducible CVE exploit labs (Dockerfile + PoC + Sigma + YARA + IOCs) |
tools/exploit-lab/ | Lab orchestration framework |
skills/ | Lyrie skills (extensible, self-improving) |
scripts/ | Operator CLIs: doctor, pairing, mcp, edits, understand, release helpers |
docs/ | Architecture, contributing, Shield Doctrine, channel guides |
🧠 Model support
Model-agnostic. Lyrie routes per task class automatically:
| Brain | Claude Opus 4.7 | Strategy, complex reasoning |
| Coder | GPT-5.5 / GPT-5.4-Codex | Code generation, refactors |
| Reasoning | o4-mini | Step-by-step deliberation |
| Fast | Gemini 3.1 Flash / Haiku 4.5 | Quick lookups, classification |
| Bulk | MiniMax-M2.7-HS | Mass content, parallel batches |
| Local | Qwen / Gemma / Llama-local | Private, self-hosted |
Bring any model — Anthropic, OpenAI, Google, xAI, MiniMax, Ollama, or your own endpoint. No lock-in.
📡 Channels
Telegram · WhatsApp · Discord · Slack · Signal · iMessage · CLI · Webchat — connect Lyrie to wherever you already work. DM pairing on by default for production deployments.
🛠 Operator CLIs
bun run doctor
bun run understand
bun run scan <repoUrl>
bun run intel list
bun run intel scan-deps
bun run intel lookup CVE-2024-7399
bun run proxy scan https://target
bun run pairing list
bun run pairing approve <chan> <code>
bun run mcp list
bun run edits list
bun run edits approve <planId>
Lyrie OSS-Scan — free public scan
Any public repo, one command:
bun run scan https://github.com/<owner>/<repo>
Lyrie clones the repo (--depth 1), runs the Attack-Surface Mapper, all eight Multi-Language Scanners, then Stages A–F Validator — returns the confirmed findings with auto-PoCs and Lyrie remediation summaries. Allowlisted hosts: github.com, gitlab.com, bitbucket.org, codeberg.org. Loopback / private addresses refused at the URL gate.
🌌 The Lyrie ecosystem
| Lyrie Agent (this repo) | OSS · MIT | Your autonomous AI operator + GitHub Action |
| Lyrie Shield | Native iOS/Android/macOS | Real-time device protection, anti-malware, anti-rogue-AI |
| Lyrie Research | research.lyrie.ai | KEV-driven verified threat intel, reproducible exploit labs |
| Lyrie OMEGA | OSS · MIT (in this repo) | Autonomous security-intelligence backend |
| Lyrie SaaS | lyrie.ai | Hosted Shield, WAF, scanner, breach monitoring |
Together: a complete digital guardian that operates and defends.
✅ Quality & tests
- 332 tests passing / 0 failing — 269 TypeScript + 63 Python
- Multi-platform CI (Node 20/22/24 × Ubuntu/macOS) + Rust Shield build
- Weekly CodeQL security analysis + Dependabot
- Pre-commit hooks: gitleaks, codespell, hygiene
- Lyrie Pentest Action runs on this repo every PR — Lyrie is its own first user
bun test packages/ action/
cd sdk/python && PYTHONPATH=. python -m pytest tests/
🔁 Migrating from another agent?
lyrie migrate --from openclaw
lyrie migrate --from hermes
lyrie migrate --from autogpt
One command. Full memory + skills + config retained.
🤝 Contributing
See CONTRIBUTING.md. New CVE labs follow tools/exploit-lab/LAB-PROTOCOL.md.
Code of Conduct: CODE_OF_CONDUCT.md. PRs that weaponize Lyrie tooling against unconsenting targets are rejected.
🔐 Security
See SECURITY.md. Responsible disclosure goes to security@lyrie.ai.
Cybersecurity isn't a feature here — it's the product.
📜 License
MIT. Use it, fork it, build on it.