Open-source engineering intelligence agent — learns a software project over time, detects architectural and security change, and produces evidence-backed intelligence reports.
Project description
Raven — Engineering Intelligence Agent
Raven is an open-source engineering intelligence agent. It learns a software project over time, detects architectural and security change, correlates it across revisions, and produces evidence-backed intelligence reports. Every report explains why something matters, not just what changed.
Evidence first. Engineering second. Opinion last.
Install
pip install ravenscan
Quick Start
raven init # scaffold .raven directory
raven scan . # run full analysis
raven score . # compute risk score
raven report # render existing artifacts
raven doctor # environment sanity check
raven version # show version info
SDK Usage
from raven import Raven
from raven.core.config import RavenConfig
client = Raven(RavenConfig(path="."))
profile = client.scan() # RepositoryProfile
arch = client.architecture() # ArchitectureGraph
security = client.security() # SecurityReport
risk = client.score() # RiskScore
daily = client.daily_report() # DailyReport
print(f"Score: {risk.overall}/100 — Grade {risk.grade}")
Output
All commands support --format json and --format markdown (default).
Artifacts are written to .raven/:
RepositoryProfile.{json,md}ArchitectureGraph.{json,md}SecurityReport.{json,md}RiskScore.{json,md}DailyReport.{json,md}
JSON is canonical — Markdown is rendered from the JSON model, never independently.
Exit Codes (CI Integration)
| Code | Meaning |
|---|---|
| 0 | Clean — no findings or score above threshold |
| 1 | Score below --fail-under threshold |
| 2 | Execution error |
| 3 | Configuration error |
raven score --fail-under 70 # CI gate: exit 1 if score < 70
WraithWall Connected Mode (remote)
Raven now supports connected mode with live WraithWall even from outside the server:
# anyone with a raven:use API key can use this before open source
raven wraith campaigns --api-key YOURKEY --api-secret YOURSECRET
raven wraith whoami --api-key ... --api-secret ...
raven wraith submit . --api-key ... --api-secret ...
- Defaults to https://wraithwall.online
- Public reads for campaigns/bgp (no key needed)
- Write/submit and whoami require key with
raven:usescope (create in WraithWall UI) - Works from laptop, CI, anywhere.
What Raven Is Not
Raven is a local CLI/SDK analyzer for repositories you point it at. It does not:
| Limitation | Detail |
|---|---|
| Live website integration (new) | raven wraith subcommands now connect to live WraithWall at https://wraithwall.online using API keys (raven:use scope). Campaigns, BGP alerts (public), whoami, submit-scan supported remotely. |
| No runtime telemetry | Raven analyzes static source trees and git history — not Redis keys, honeypot sessions, BGP feeds, or APScheduler state. |
| No WraithWall operator console | Phase 8 live architecture visualization (/console#/architecture) is a separate corpus-driven system in the main Flask app (architecture_viz.py), not Raven output. |
| No deception mesh modeling | Cowrie pipelines, canary propagation, sandbox flows, and campaign correlation are documented in docs/architecture/ and rendered by scripts/generate_wraithwall_diagrams.py — Raven does not ingest those runtime graphs. |
| No autonomous alerting | Raven writes local .raven/ artifacts only. It does not send Telegram, Discord, or email notifications. |
| No multi-repo fleet view | One raven scan per working tree. No cross-deployment correlation across VPS hosts. |
| No guaranteed supply-chain audit | Security plugins cover common languages; unknown frameworks, generated bundles, and vendored binaries may be skipped. |
WraithWall vs Raven
| Capability | WraithWall (production) | Raven (CLI) |
|---|---|---|
| Architecture diagrams on website | Yes — /#architecture scroll gallery + authenticated console |
No — local .raven/ArchitectureGraph.md only |
| Source of truth | docs/architecture/*.json (Phase 8 corpus) |
Repository static analysis |
| Live honeypot / deception data | Yes | No |
| CI risk gate | Via custom integration | raven score --fail-under |
To regenerate WraithWall publication diagrams from the validated corpus:
python3 scripts/generate_wraithwall_diagrams.py
# → static/img/architecture/*.svg + *.png
To deploy Cowrie without config-mount regressions:
chmod +x cowrie-analyzer/scripts/deploy-cowrie.sh
cowrie-analyzer/scripts/deploy-cowrie.sh
Development
pip install -e ".[all]"
pytest
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ravenscan-0.1.0.tar.gz.
File metadata
- Download URL: ravenscan-0.1.0.tar.gz
- Upload date:
- Size: 64.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
369ec6cac53f4355dc02bb7e32e7503103fef22baf53deb69ce2ead86f4076b2
|
|
| MD5 |
728773db15ab5a939fc5964a2e558ee2
|
|
| BLAKE2b-256 |
a0e782a601f0f88f35f772ea01175a2a05aa84ef4a13066aeb708e4aa9ff445f
|
File details
Details for the file ravenscan-0.1.0-py3-none-any.whl.
File metadata
- Download URL: ravenscan-0.1.0-py3-none-any.whl
- Upload date:
- Size: 88.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
59b70ea1642d951a672fd94defe6453df11ad31739e7d1ca7237e6d9982cea93
|
|
| MD5 |
e19b1f54786335754cd24c071195bad1
|
|
| BLAKE2b-256 |
35b2407b630ca3cef3e2023f211fd7dc52327fb8b5af392125c2f50f4b169e99
|