A 13-agent CLI that runs DevRel, sales, and marketing on your repo. BYO Anthropic key.
Project description
devrel-swarm
A developer-first CLI for AI-powered DevRel, sales, and marketing.
devrel-swarm is a pipx-installable command-line tool that runs a 13-agent system against any project — community triage, social listening, theme extraction, growth experiments, content production, video tutorials, documentation, competitive intel, sales outreach, brand-consistent campaigns, and post-publish content performance analysis. Operates on a project repo the way git, npm, and cargo do.
Every piece of content the system produces flows through an 8-stage editorial pipeline (developmental edit → line edit → copy edit → anti-slop → reader-persona test → readability check → brand audit) so output reads like senior-editor work, not generic AI prose.
Every deliverable in this repository was produced by the agent system itself.
Quick start
First content in five minutes. devrel init is now an interactive wizard
that walks you through scaffold → LLM key → health check → voice tuning →
first draft in one session.
pipx install devrel-swarm
cd /path/to/your/project
devrel init # interactive wizard, all the way to first draft
The wizard:
- Scaffolds
.devrel/withconfig.toml,voice.md,style.md,slop-blocklist.md,kb/,deliverables/,state.db - Configures an LLM key — pick Anthropic or OpenRouter (recommended:
free credits, no waitlist), validates with a one-token ping, writes to
.devrel/.env(chmod 600) - Runs a health check — confirms env, scaffold, schema
- Opens
voice.mdin$EDITORso you can drop in 3-5 sample passages from your best published content - Generates your first content draft — prompts for topic + type, calls Kai through the full editorial pipeline, persists the draft + grounding/code-validation trace
Skip flags for non-default flows:
devrel init --skip-draft # wizard through voice edit, no LLM call
devrel init --skip-chain # scaffold only, you run auth/doctor/draft yourself
devrel init --non-interactive --name myproj --url ... --github-repo ...
# CI shape: scaffold only, no prompts
After onboarding:
devrel run # ad-hoc weekly pipeline (all 13 agents)
devrel schedule install # cron it (Mondays 09:00 UTC default)
Why OpenRouter? Lower onboarding barrier than Anthropic API access (no waitlist, free monthly credits) and supports per-agent model routing. The wizard recommends it.
Stuck? See docs/troubleshooting.md for the common failures (OpenRouter 400, missing keys, ungrounded content, quality-gate aborts) and their fixes.
After devrel init, your repo has a .devrel/ directory with:
.devrel/
config.toml # product identity, model selection, budget caps
voice.md # tone profile + sample passages (commit)
style.md # house style + per-content targets (commit)
slop-blocklist.md # banned phrases (commit)
kb/ # knowledge base, TF-IDF indexed
deliverables/ # generated outputs
state.db # SQLite: jobs, costs, checkpoints
The four committed files (config.toml, voice.md, style.md, slop-blocklist.md) encode the editorial contract. Diff them like any other source.
Commands
# Bootstrap & health
devrel init bootstrap .devrel/ in cwd
devrel doctor [--json] check env, API keys, KB freshness
devrel cost [--month YYYY-MM] token + USD report from state.db
# Pipelines
devrel run full weekly cycle
devrel run --health health check only (Watchdog)
devrel run --agent NAME --task T run a single agent ad-hoc
# DevRel
devrel triage [--days N] GitHub issue triage (Sage)
devrel listen [--platforms ...] Reddit / HN / X (Echo)
devrel synthesize theme extraction (Iris)
devrel experiment HYPOTHESIS A/B + power analysis (Nova)
# Content
devrel content draft PROMPT revision-looped + 5-lever quality (Kai)
devrel content audit FILE run quality pipeline on existing draft
devrel content slop FILE run only the anti-slop pass
devrel docs build AST-based docs (Dex)
devrel video record SCRIPT screen-recorded tutorial (Vox)
# Sales
devrel intel COMPETITOR
devrel sales outreach COMPANY
devrel sales battlecard COMPETITOR
devrel sales sequence CAMPAIGN
# Marketing
devrel marketing blog TOPIC
devrel marketing landing TOPIC
devrel marketing social TOPIC
devrel marketing campaign BRIEF
# Knowledge base
devrel kb add URL [--category C]
devrel kb list
devrel kb refresh
# Config & schedule
devrel config get KEY
devrel config set KEY VALUE
devrel schedule install | list | remove
# Outputs
devrel deliverables list
devrel deliverables show NAME
# Analytics (Argus)
devrel analytics report [--since 7d] [--push] [--push-on-partial]
devrel analytics history CONTENT_ID
devrel analytics diff PERIOD_A PERIOD_B
devrel analytics calibration
devrel analytics summary [--root PATH]
Global flags on most verbs: --json (machine-readable output) and --quiet.
Editorial quality pipeline
Every content-producing run (devrel content draft, devrel content audit, plus internal calls from marketing, sales, kb-driven tutorials) flows through 8 stages:
1. Generate KB-grounded; voice.md + style.md in prompt
2. Developmental critique+revise (structure, argument, hook)
3. Line edit critique+revise (rhythm, voice fidelity)
4. Copy edit critique+revise (grammar, code, consistency)
5. Anti-slop regex blocklist + LLM lint; force-rewrite on hit;
second failure aborts loud with a phrase report
6. Reader persona "skeptical senior backend dev" scores 1-10
7. Readability Flesch + sentence variance + jargon density
checked against per-content-type targets
8. Brand audit Sentinel (existing 6-dimension audit)
→ deliverables/ + revision-trace.json (every stage's score + diff)
Stages 5-7 use Haiku for cost; stages 2-4 use Sonnet. Total cost ≈ 2.5-4× a single revision loop, with prompt caching pulling toward the lower bound. BudgetGate guardrails (configurable in .devrel/config.toml) track spend; devrel cost --month YYYY-MM reports it.
How it works internally
Hub-and-spoke with 13 agents. Atlas orchestrates; specialists execute across three pipelines.
Atlas (Orchestrator)
├── Health: Watchdog (pre-flight) + Sentinel (pre-publish brand audit) + Argus (post-publish performance analyst)
├── DevRel: Sage, Echo, Iris, Nova, Kai, Vox, Dex
└── Sales: Rex, Pax, Mox
The weekly cycle (driven by devrel run):
Stage 0: Watchdog (health + budget check)
Stage 1: Sage + Echo + Dex parallel
Stage 2: Rex + Iris parallel
Stage 3: Nova + Kai parallel (Kai routes through quality pipeline)
Stage 4: Vox
Stage 5: Sentinel brand audit
Stage 5b: Argus post-publish content performance analysis
Stage 6: Instantly sync, OKR compilation, Sheets publish, digest
Argus is config-gated by [orchestration].analytics_in_run (default true); set to false to skip the stage. Standalone use via devrel analytics report is unaffected.
The Atlas.delegate() API also dispatches single-agent tasks, which is what every non-run verb wraps. So devrel triage is Atlas.delegate("sage", "Triage GitHub issues from the last 7 days") — the agents never appear in the public CLI surface, only the verbs.
Configuration
.devrel/config.toml example:
[project]
name = "openclaw"
url = "https://openclaw.ai"
github_repo = "openclaw/openclaw"
[model]
default = "claude-sonnet-4-6"
cheap = "claude-haiku-4-5-20251001"
opus_opt_in = true
[budget]
monthly_usd = 100.0
warn_at_pct = 80
Edit with devrel config set <key> <value> or directly in your editor.
Environment variables
| Variable | Required | Used by |
|---|---|---|
ANTHROPIC_API_KEY |
yes | every LLM-using verb |
GITHUB_TOKEN |
for triage | Sage |
FIRECRAWL_API_KEY |
for KB harvest + intel | kb add, Echo, Rex |
BRAVE_API_KEY |
optional fallback | search |
INSTANTLY_API_KEY |
for cold-email sync | Pax, Mox |
APOLLO_API_KEY |
for lead enrichment | Rex, Pax |
TELEGRAM_BOT_TOKEN |
for digests | Atlas pipeline |
EMAIL_SENDER / EMAIL_PASSWORD |
for digests | Atlas pipeline |
OPENAI_API_KEY |
for video TTS | Vox |
.env files at the project root are loaded automatically. Cross-project shared keys can live at ~/.devrel/secrets.env.
Retargeting to another product
cd /path/to/other-project
devrel init --name otherproduct --url https://otherproduct.dev --github-repo owner/otherproduct
devrel kb add https://otherproduct.dev/docs --category docs
# edit voice.md / style.md / slop-blocklist.md to match the other product's voice
devrel doctor
devrel run
The agent system is product-agnostic. Per-project config + KB + voice files do all the targeting.
Documentation
The user-facing docs live in docs/:
docs/quickstart.md— install, configure an LLM key, ship your first grounded draft in 5 minutesdocs/troubleshooting.md— common failures and fixes (OpenRouter 400, missing keys, ungrounded content, quality-gate aborts)docs/agents/argus.md— content performance analyst, the 13th agentdocs/cli/analytics.md— full reference for thedevrel analyticssubgroupdocs/cookbook.md— common recipes (calibration, weekly cron, multi-project rollups)
Internal docs (architecture specs, implementation plans) live in docs/superpowers/.
Tech stack
| Component | Choice |
|---|---|
| Language | Python 3.12+ |
| CLI framework | Typer + Rich |
| Agent SDK | Claude Agent SDK |
| HTTP | httpx (async) |
| Default model | Claude Sonnet 4.6 (Haiku for cheap quality stages, Opus opt-in) |
| Stats | scipy (power analysis, Bayesian eval) |
| Video | Playwright + FFmpeg + OpenAI TTS |
| Storage | SQLite per project (.devrel/state.db) |
| Tests | pytest + pytest-asyncio + respx |
Author
Daria Dovzhikova — DevTools Growth Strategist & AI Agent Builder
- 12+ years in DevTools (JetBrains, Huawei, Lightrun, Odigos)
- dariadovzhikova.com
MIT License
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 devrel_swarm-0.2.12.tar.gz.
File metadata
- Download URL: devrel_swarm-0.2.12.tar.gz
- Upload date:
- Size: 297.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
651e9d8831685df783b592bc2d2a9ebb89b95a0c129aea2e4387db3dc7903095
|
|
| MD5 |
d6dc0be21327e6ea3dc71f7f2375f270
|
|
| BLAKE2b-256 |
6a96cb4664b7e8e2aea6c1f7f5ae5d6b40098b08e2317d16cb48a909f559d7cc
|
Provenance
The following attestation bundles were made for devrel_swarm-0.2.12.tar.gz:
Publisher:
release.yml on dovzhikova/devrel-swarm
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devrel_swarm-0.2.12.tar.gz -
Subject digest:
651e9d8831685df783b592bc2d2a9ebb89b95a0c129aea2e4387db3dc7903095 - Sigstore transparency entry: 1509364887
- Sigstore integration time:
-
Permalink:
dovzhikova/devrel-swarm@3e1a929488ceb09611e736d162cb8e933f76d90d -
Branch / Tag:
refs/tags/v0.2.12 - Owner: https://github.com/dovzhikova
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@3e1a929488ceb09611e736d162cb8e933f76d90d -
Trigger Event:
push
-
Statement type:
File details
Details for the file devrel_swarm-0.2.12-py3-none-any.whl.
File metadata
- Download URL: devrel_swarm-0.2.12-py3-none-any.whl
- Upload date:
- Size: 254.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
44acc9a51116c2824889f3f6768ad9ff3260e93afb38e0239dd1ee8f4052f00a
|
|
| MD5 |
fd31e8d3a7d675dfb47282d7052aa7f3
|
|
| BLAKE2b-256 |
c8bd5b47c5052b27ff1be05a1a5e4a5333bdec1b73aabbf51909409900946cca
|
Provenance
The following attestation bundles were made for devrel_swarm-0.2.12-py3-none-any.whl:
Publisher:
release.yml on dovzhikova/devrel-swarm
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devrel_swarm-0.2.12-py3-none-any.whl -
Subject digest:
44acc9a51116c2824889f3f6768ad9ff3260e93afb38e0239dd1ee8f4052f00a - Sigstore transparency entry: 1509364941
- Sigstore integration time:
-
Permalink:
dovzhikova/devrel-swarm@3e1a929488ceb09611e736d162cb8e933f76d90d -
Branch / Tag:
refs/tags/v0.2.12 - Owner: https://github.com/dovzhikova
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@3e1a929488ceb09611e736d162cb8e933f76d90d -
Trigger Event:
push
-
Statement type: