stoa
Health Warn
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Warn
- process.env — Environment variable access in dashboard/app/api/skills/[name]/run/route.ts
- network request — Outbound network request in dashboard/app/api/skills/[name]/run/route.ts
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Multi-agent swarm framework. Seven autonomous agents. 30 skills. One shared mesh. Zero infrastructure.
Multi-agent swarm framework for autonomous operations.
Seven agents. 30 skills. One shared mesh. Zero infrastructure.
Most agent frameworks give you a single brain with tools. That works until you need the brain to watch, think, act, research, write, and protect at the same time.
stoa is a multi-agent swarm where seven specialized agents coordinate autonomously. Each agent has a role, a personality, and skills. They communicate through a shared mesh. They run for free on GitHub Actions. State is git commits. Skills are markdown. Nothing to host, nothing to pay for (beyond LLM calls).
researcher ──research──→ analyst ──trade-signal──→ executor
↓ ↑ ↑
scout ──signal────────────┘ guardian ──halt──→───┘
↓ ↓
writer ←── insight ──────── protects everything
↓
ops ←── repo health, CI, deploys
What's in the box
| Count | Description | |
|---|---|---|
| Agents | 7 | scout, analyst, executor, guardian, researcher, writer, ops |
| Skills | 30 | Trading, research, content, devops |
| Chains | 5 | Multi-step pipelines with dependency graphs |
| Dashboard | 1 | Next.js operations UI with real-time swarm monitoring |
| Messaging | 3 | Telegram, Discord, Slack inbound + outbound |
| LLM Providers | 3 | Claude, OpenAI, Gemini with automatic failover |
| Tests | 39+ | Pipeline tests + Solana devnet integration tests |
Why a swarm?
| Single-agent | Off-chain swarm | stoa | |
|---|---|---|---|
| Multi-agent coordination | No | Yes | Yes (7 agents) |
| Role specialization | No | Yes | Yes |
| On-chain verification | No | No | Yes (preflight + postflight) |
| Risk isolation | No | Partial | Yes (Guardian veto) |
| Infrastructure cost | Server | Server | $0 (GitHub Actions) |
| State persistence | External DB | External DB | Git commits |
| Adding capabilities | Write code | Write code | Write markdown |
| LLM failover | Single provider | Single provider | Multi-LLM gateway |
| Inbound messaging | Custom | Custom | Built-in (Telegram/Discord/Slack) |
| Dashboard | Build it | Build it | Included |
Quick start
# 1. Fork this repo
gh repo create my-stoa --template stoaaadev/stoa --private
# 2. Set secrets
gh secret set ANTHROPIC_API_KEY --body "sk-ant-..."
gh secret set SOLANA_RPC_URL --body "https://api.mainnet-beta.solana.com" # optional
gh secret set SOLANA_PRIVATE_KEY --body "your-base58-key" # optional
# 3. Enable Actions
gh workflow enable tick.yml
gh workflow enable agent.yml
gh workflow enable messages.yml
# 4. Optional: enable messaging
gh secret set TELEGRAM_BOT_TOKEN --body "your-bot-token"
gh secret set TELEGRAM_CHAT_ID --body "your-chat-id"
# 5. Done. The swarm starts on the next cron tick.
Or run locally:
npm install
npx stoa status # check swarm state
npx stoa dispatch # run the dispatcher
npx stoa execute scout scan-tokens # run one skill
npx stoa chain full-scan # run a skill chain
npx stoa agents # list all agents
npx stoa mesh scout # view agent inbox
npx stoa messages # view inbound messages
npx stoa health # quality scores
npx stoa cost # token usage
npx stoa gateway # LLM provider status
npx stoa validate # validate config
# Run the dashboard
cd dashboard && npm install && npm run dev
Agents
Scout — the eyes
Monitors Solana for actionable signals: token price movements, volume spikes, new pools, whale transactions. Runs every 30 minutes.
Skills: scan-tokens morning-brief
Analyst — the brain
Evaluates signals from Scout and Researcher. Scores opportunities across multiple dimensions. Only signals above the confidence threshold generate trade theses.
Skills: analyze-signal trend-analysis market-structure
Executor — the hands
Receives validated trade-signals from Analyst and executes via Jupiter. Supports single trades, DCA, and stop-loss triggers. Every transaction goes through preflight/postflight verification. Purely reactive — no cron schedule.
Skills: execute-trade dca-execute stop-loss-execute
Guardian — the immune system
Monitors all open positions, enforces stop-losses, checks drawdown, flags anomalies. Has veto power — a single halt message freezes the entire swarm. Runs self-healing routines automatically.
Skills: check-risk health-check self-repair self-improve
Researcher — the scholar
Conducts deep research across academic papers, protocol docs, competitive landscapes. Synthesizes findings into structured intelligence for other agents.
Skills: arxiv-scan paper-summarize competitor-watch github-trending protocol-deep-dive exploit-postmortem security-audit-watch
Writer — the voice
Creates digests, newsletters, changelogs, and social posts. Fact-checks before publishing.
Skills: daily-digest weekly-recap changelog-generate editorial-review write-newsletter tweet-compose
Ops — the engineer
Manages repository health, CI pipelines, dependencies, security scanning, and PR reviews.
Skills: repo-health pr-review dependency-audit ci-monitor security-scan
Skills
Skills are markdown prompts. No code. Drop a SKILL.md in skills/your-skill/ and reference it in an agent's config.
skills/
├── Trading # scan-tokens, morning-brief, analyze-signal, execute-trade, check-risk, ...
├── Research # arxiv-scan, paper-summarize, github-trending, competitor-watch, ...
├── Content # daily-digest, weekly-recap, write-newsletter, tweet-compose, ...
└── DevOps # repo-health, pr-review, dependency-audit, ci-monitor, security-scan
Adding a skill
- Create
skills/my-skill/SKILL.md - Add it to the agent's skill list in
stoa.yml - Push. The agent picks it up on its next tick.
Skill format
---
name: skill-name
agent: researcher
description: "One-line purpose"
schedule: "0 */4 * * *"
---
# skill-name
## Objective
What this skill does.
## Steps
1. Detailed step-by-step instructions
2. Include real API endpoints and data sources
3. Define output schemas
## Output
Files to write, messages to send via mesh.
## Exit Codes
- SKILL_OK: success
- SKILL_FAIL: failure
Skill Chains
Skills compose into pipelines with dependency graphs:
chains:
morning-pipeline:
steps:
brief: { agent: scout, skill: morning-brief }
research: { agent: researcher, skill: arxiv-scan }
analysis: { agent: analyst, skill: analyze-signal, depends_on: [brief] }
digest: { agent: writer, skill: daily-digest, depends_on: [brief, research, analysis] }
schedule: "0 8 * * *"
research-pipeline:
steps:
scan-papers: { agent: researcher, skill: arxiv-scan }
scan-github: { agent: researcher, skill: github-trending }
summarize: { agent: researcher, skill: paper-summarize, depends_on: [scan-papers] }
write: { agent: writer, skill: write-newsletter, depends_on: [summarize, scan-github] }
review: { agent: writer, skill: editorial-review, depends_on: [write] }
schedule: "0 10 * * 1,4"
Five built-in chains: full-scan, morning-pipeline, research-pipeline, weekly-maintenance, security-audit.
Dashboard
The dashboard/ directory contains a Next.js operations UI for monitoring and controlling the swarm.
Features:
- Real-time swarm status and agent health
- Skill execution history with quality scores
- Token usage and cost tracking
- Mesh message visualization
- Skill output feed
- Manual skill trigger
- Git sync
cd dashboard
npm install
npm run dev # http://localhost:3000
Set AUTH_PASSWORD in .env.local to enable authentication.
Messaging
The swarm accepts inbound messages from Telegram, Discord, and Slack. Messages are polled every 5 minutes via messages.yml and routed to the appropriate agent.
| Channel | Outbound | Inbound |
|---|---|---|
| Telegram | TELEGRAM_BOT_TOKEN + TELEGRAM_CHAT_ID |
Same (offset polling) |
| Discord | DISCORD_WEBHOOK_URL |
DISCORD_BOT_TOKEN + DISCORD_CHANNEL_ID |
| Slack | SLACK_WEBHOOK_URL |
SLACK_BOT_TOKEN + SLACK_CHANNEL_ID |
Message routing is keyword-based: trading terms go to executor, research terms to researcher, monitoring terms to scout, etc. Send a message to your bot and the swarm responds.
All agents use ./notify "message" to send responses back across all configured channels.
Multi-LLM Gateway
The gateway implements automatic failover across three providers:
Claude (primary) → OpenAI (fallback) → Gemini (fallback)
Set per-agent models in stoa.yml. Scout might use Haiku (fast, cheap) while Analyst uses Opus (deep reasoning).
Safety Model
- Role separation — the agent that discovers opportunities cannot execute trades
- Preflight gates — halt check, balance verification, circuit breaker, position limits
- Postflight verification — on-chain transaction confirmation via
@solana/web3.js - Circuit breaker — skills that fail repeatedly are automatically blocked
- Guardian veto — freezes the entire swarm instantly
- Confidence gating — Analyst must score above threshold before generating trade-signals
- Position limits — enforced in config, preflight, and Executor skill
- Stop-loss enforcement — Guardian checks every 15 minutes
- Drawdown circuit breaker — automatic cooldown on threshold breach
- Multi-LLM failover — no single provider outage halts the swarm
- Output validation — fabrication detection and secret leak prevention
- Prompt injection scanner — blocks adversarial inputs
- Rate limiting — token bucket limiter per API
- Dispatch deduplication — prevents double-triggers
- Immutable audit trail — all state changes are git commits
- Self-healing — automatic repair of degrading skills
Mesh Protocol
Agents communicate asynchronously via memory/mesh/. Each agent has an inbox. Messages are typed JSON with TTL-based expiry and acknowledgment:
{
"from": "scout",
"to": "analyst",
"type": "signal",
"id": "scout-1716000000000-a3f2",
"timestamp": "2026-05-18T12:00:00.000Z",
"data": {
"signal_type": "volume_spike",
"token": "JUP",
"details": "3.2x average volume in 1h"
}
}
Message types: signal feedback trade-signal execution-report halt cooldown research research-request insight content-ready review-request deploy-request repair-needed
MCP Server
The mcp-server/ exposes the swarm as tools for Claude Desktop:
stoa_status stoa_health stoa_dispatch stoa_execute stoa_mesh_read stoa_mesh_post stoa_positions stoa_cost stoa_chain stoa_halt stoa_resume stoa_validate stoa_gateway
Project Structure
stoa/
├── stoa.yml # swarm configuration
├── CLAUDE.md # agent identity
├── dashboard/ # Next.js operations UI
│
├── agents/ # 7 agent role definitions
│ ├── scout/AGENT.md
│ ├── analyst/AGENT.md
│ ├── executor/AGENT.md
│ ├── guardian/AGENT.md
│ ├── researcher/AGENT.md
│ ├── writer/AGENT.md
│ └── ops/AGENT.md
│
├── skills/ # 30 skill prompts
│ ├── scan-tokens, morning-brief, analyze-signal, ...
│ ├── execute-trade, dca-execute, stop-loss-execute
│ ├── check-risk, health-check, self-repair, self-improve
│ └── arxiv-scan, repo-health, daily-digest, ...
│
├── src/ # TypeScript runtime
│ ├── index.ts # CLI entry
│ ├── dispatch.ts # cron dispatcher
│ ├── execute.ts # agent executor
│ ├── messages.ts # inbound message handler
│ ├── solana.ts # Solana integration
│ ├── gateway.ts # multi-LLM failover
│ ├── chain.ts # skill chaining (DAG)
│ ├── mesh.ts # inter-agent messaging
│ ├── memory.ts # state management
│ ├── security.ts # runtime security
│ ├── health.ts # quality scoring
│ ├── preflight.ts # pre-execution checks
│ ├── postflight.ts # post-execution verification
│ └── ... # 11 more modules
│
├── mcp-server/ # MCP server for Claude Desktop
│
├── memory/ # swarm state (git-committed)
│ ├── mesh/ # agent inboxes
│ ├── skill-health/ # quality scores
│ └── ...
│
├── .github/workflows/
│ ├── tick.yml # cron dispatcher
│ ├── agent.yml # skill executor
│ ├── messages.yml # inbound message handler
│ ├── chain-runner.yml # skill chain executor
│ └── ci.yml # typecheck + test + validate
│
├── test-pipeline.ts # 39 pipeline tests
└── test-devnet.ts # Solana devnet tests
Testing
npx tsx test-pipeline.ts # 39 tests, no network
npx tsx test-devnet.ts # Solana devnet integration
CI runs both automatically on push: typecheck → pipeline tests → config validation → devnet integration.
Cost
| Component | Cost |
|---|---|
| GitHub Actions | Free (2,000 min/month) |
| Claude API | ~$0.01–0.05 per skill |
| Solana RPC | Free (public endpoints) |
| Hosting | $0 |
Adding Agents
- Create
agents/my-agent/AGENT.md - Create skills in
skills/ - Add to
stoa.yml - Push
FAQ
Is this a trading bot?
stoa is a general-purpose multi-agent framework. The default config includes trading (scout → analyst → executor), but also research, content, social, devops, and automation pipelines. Enable what you need, disable what you don't.
How is this different from aeon?
aeon is a single-agent bash framework. stoa is a multi-agent TypeScript framework with mesh communication, DAG chaining, runtime security, and a dashboard. Different architecture, different tradeoffs.
What if Claude is down?
The gateway fails over to OpenAI, then Gemini. Set all three API keys.
Do I need Solana?
No. Solana is optional. Without SOLANA_RPC_URL, onchain skills are skipped. Research, content, devops, and automation skills work without any chain.
Can I message the swarm?
Yes. Set up a Telegram/Discord/Slack bot. Send a message and the swarm routes it to the right agent and responds.
Philosophy
The Stoa Poikile was the painted porch in Athens where Zeno of Citium founded Stoic philosophy. The Stoics believed in rational agents acting within a shared logos — each autonomous, yet part of a greater order.
stoa applies the same structure to autonomous agents. Scout observes. Analyst reasons. Researcher investigates. Writer communicates. Executor acts. Ops maintains. Guardian protects.
License
MIT
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found