STOA Agent — a chamber of six personas + one dispatcher. Local-first, bring-your-own-key, no subscription, no lock-in. See ATTRIBUTION.md for upstream lineage.
Project description
STOA Agent ⁂
Six personas in one chamber, running on your machine. Council-mode debate · Bring-your-own-key · No subscription, no lock-in.
STOA is a Socratic chamber: six named personas — each with its own role, system prompt, and reasoning style — debate every non-trivial task in parallel, then a seventh dispatcher composes a verdict. STOA itself is free and open-source forever; you bind your own LLM API key (we recommend DeepSeek's free tier — 2-minute signup, no card) and STOA never sees, brokers, or proxies your key. Want one provider per persona (e.g. Sokrates → Anthropic, Veritas → Google, Drax → xAI)? Bind a different key per seat in
~/.stoa/cli-config.yaml.
This is a fork of NousResearch / hermes-agent v0.14.0 (MIT). The runtime, gateway, sandboxes, memory store, skill format, and provider plugin layer are inherited from upstream — see ATTRIBUTION.md for the full lineage. What STOA adds on top is the chamber: persona orchestration, an optional on-chain attestation preview, and a 6-agent skill-publication audit gate.
Install
macOS · Linux · WSL2 · Termux
curl -fsSL https://stoax.xyz/install.sh | sh
Windows · PowerShell
iex (irm https://stoax.xyz/install.ps1)
PyPI
pip install stoa-agent
stoa setup
Homebrew
brew tap stoagent/stoa
brew install stoa-agent
Direct from source
git clone https://github.com/STOAGENT/stoa-agent
cd stoa-agent
uv venv && uv pip install -e .
stoa setup
What STOA adds
1. Council mode — six personas, one chamber
Each persona has its own system prompt, reasoning style, and tool affinity. They run in parallel against the same task, and a seventh dispatcher composes a verdict by surfacing agreement and dissent rather than collapsing the answer to a single voice.
stoa /council "audit this contract: $(cat MyToken.sol)"
# → 6 personas in parallel
# → Sokrates / Mira / Veritas / Drax / Lyra / Echo each respond
# → Verdict + per-persona dissent + response hash (local)
| Persona | Role |
|---|---|
| Sokrates | the question-maker — surfaces hidden assumptions |
| Mira | the builder — produces concrete artifacts |
| Veritas | the auditor — looks for incorrectness |
| Drax | the red team — looks for failure modes |
| Lyra | the designer — looks for clarity and form |
| Echo | the operator — looks for ops + lifecycle risk |
| Hermes | the dispatcher (the seventh) — composes the verdict |
2. Provider model — bring-your-own-key
STOA never bundles, brokers, or proxies anyone else's API key. There is no STOA cloud and no "free credits from us." Instead the first-run wizard walks you through the cheapest viable setup:
- Go to https://platform.deepseek.com/api_keys (free signup, no card).
- Create a key. DeepSeek's free tier covers typical solo use; a heavy session is a few cents.
- Paste the key. STOA writes it to
~/.stoa/cli-config.yamlon your machine and never sends it anywhere else.
Result: the chamber works end-to-end on your own DeepSeek free tier, with you in full control of the spend. Want one provider per persona (e.g. Sokrates → Anthropic, Veritas → Google, Drax → xAI)? Bind a different key per seat:
# ~/.stoa/cli-config.yaml — produced by `stoa setup`, fully editable
personas:
sokrates: { provider: deepseek, model: deepseek-reasoner } # default
mira: { provider: deepseek, model: deepseek-chat } # default
# …or override per seat with a different key + provider:
veritas: { provider: anthropic, model: claude-opus-4-7, api_mode: anthropic }
The persona names (Sokrates / Mira / Veritas / Drax / Lyra / Echo / Hermes) are role identifiers and are decoupled from any single model vendor — see
stoa /persona listfor the live binding on your machine.
3. Council-audited skill publication
The hardest problem in agent skill ecosystems is supply-chain trust. STOA's answer: no skill publishes without a 6-persona audit + 5-of-6 quorum + a local audit hash. Security, performance, prompt-injection, license, structure, attribution — six different lenses on every new skill.
stoa skill publish ./my-skill
# → 6 personas audit it independently
# → 5-of-6 quorum required
# → audit hash written locally; on-chain stamp behind --attest (preview)
4. On-chain attestation — preview
stoa --attest is currently a preview feature behind a flag.
When enabled, every council verdict optionally writes its response hash to AuditAttestationV2 on Monad mainnet, so months later anyone can verify a STOA agent ran exactly the action it claims it ran. The hashing + persistence are wired; the eth_sendRawTransaction submission and verifier client are under hardening for the next release. Until then, expect --attest to compute the hash, queue the request, and log attestation_preview: pending_submit.
If you have no need for on-chain verifiability, you can ignore --attest entirely — the chamber, the verdict, and the skill audit gate all work locally without it.
Commands
| Command | What it does |
|---|---|
stoa |
Splash dashboard + interactive REPL |
stoa chat |
Direct chat mode |
stoa setup |
First-run wizard (writes ~/.stoa/cli-config.yaml) |
stoa gateway |
Run the multi-platform daemon (Telegram, Discord, Slack, etc.) |
stoa /council "<task>" |
Six personas in parallel + verdict |
stoa /persona <name> |
Switch single-persona mode |
stoa /persona list |
Show the live persona ↔ provider binding |
stoa /verdict |
Show the last council verdict |
stoa /attest |
preview — stamp the last verdict on-chain |
stoa skill publish |
Runs the 6-persona audit gate before publishing |
stoa migrate xai |
Rewrite config to replace retired xAI models with current ones |
Skills shipped under skills/stoa/
council-verdict— orchestrate a 6-persona call from inside a skillmonad-attestation— write a hash to AuditAttestationV2 (preview)solidity-audit-pipeline— Slither + Mythril + Echidna + manual reviewerc8004-reputation— read or write agent reputation eventsstoa-skill-publish— the publication audit gate itselfmonad-mev-watchdog— passive on-chain monitorsolana-anchor-audit— Anchor-program review
Security posture
STOA inherits the same primitive set as its upstream lineage: shell execution, browser automation, plugin marketplace, optional wallet binding. These are powerful tools and require operator literacy — STOA targets the same operator profile as Cursor, Claude Code, and Aider.
- Default-OFF gates (DB encryption, PII/IP redaction, skill ed25519 signature, mandatory sandbox) are being flipped to default-ON via a
STOA_SECURITY_PRESETselector in the next release. - Bug bounty + coordinated disclosure: see SECURITY.md. Do not open public issues for security reports.
- Audit reports are not published to the master tree — coordinated disclosure first. We ship fixes, then summary write-ups.
License
MIT for the STOA Agent codebase. See LICENSE. The upstream MIT license is preserved verbatim; this fork adds the attribution recorded in ATTRIBUTION.md.
Bundled assets carry their own licenses:
web/public/fonts-terminal/JetBrainsMono-*.woff2— SIL Open Font License 1.1, seeweb/public/fonts-terminal/OFL.txt.optional-skills/productivity/powerpoint/— Proprietary, Anthropic. Opt-in only (setSTOA_ENABLE_OPTIONAL_SKILLS=1to discover it). Use is governed by your separate agreement with Anthropic; the fileoptional-skills/productivity/powerpoint/LICENSE.txtships the full terms. NOT covered by MIT.optional-skills/mlops/inference/obliteratus/— AGPL-3.0. Opt-in viaSTOA_ENABLE_REDTEAM=1. AGPL §13 obligations apply if you ship a network-accessible service that incorporates this skill.
Links
- Docs · https://stoax.xyz/cli
- Chamber · https://stoax.xyz
- PyPI · https://pypi.org/project/stoa-agent/
- Source · https://github.com/STOAGENT/stoa-agent
- Upstream lineage · ATTRIBUTION.md
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 stoa_agent-0.14.6.tar.gz.
File metadata
- Download URL: stoa_agent-0.14.6.tar.gz
- Upload date:
- Size: 10.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6ce32365c44f02a2c0b6339cceb681119a58fa2720952480c4fc21ea942b326
|
|
| MD5 |
bc0bc93d831ae51450c467facc3515eb
|
|
| BLAKE2b-256 |
b22b44da73c5b6122610f35f2c24f70e8576c0aeae114b997091147a1d6b3734
|
Provenance
The following attestation bundles were made for stoa_agent-0.14.6.tar.gz:
Publisher:
upload_to_pypi.yml on STOAGENT/stoa-agent
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
stoa_agent-0.14.6.tar.gz -
Subject digest:
c6ce32365c44f02a2c0b6339cceb681119a58fa2720952480c4fc21ea942b326 - Sigstore transparency entry: 1660625409
- Sigstore integration time:
-
Permalink:
STOAGENT/stoa-agent@263ea781682d5242d0def994e24ed8198b4a4244 -
Branch / Tag:
refs/tags/v0.14.6 - Owner: https://github.com/STOAGENT
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
upload_to_pypi.yml@263ea781682d5242d0def994e24ed8198b4a4244 -
Trigger Event:
push
-
Statement type:
File details
Details for the file stoa_agent-0.14.6-py3-none-any.whl.
File metadata
- Download URL: stoa_agent-0.14.6-py3-none-any.whl
- Upload date:
- Size: 11.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
166b39dab90b7d5e4a4552cab02542e4fc241f6e06491132cd0b236c53cdf54e
|
|
| MD5 |
3f66c88c6accc7fbd24295aa4d16d60a
|
|
| BLAKE2b-256 |
41356fd51a1d3a20f042a60e1fdb5bc8be51df89a78baf00fd68974cd7200b6b
|
Provenance
The following attestation bundles were made for stoa_agent-0.14.6-py3-none-any.whl:
Publisher:
upload_to_pypi.yml on STOAGENT/stoa-agent
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
stoa_agent-0.14.6-py3-none-any.whl -
Subject digest:
166b39dab90b7d5e4a4552cab02542e4fc241f6e06491132cd0b236c53cdf54e - Sigstore transparency entry: 1660625488
- Sigstore integration time:
-
Permalink:
STOAGENT/stoa-agent@263ea781682d5242d0def994e24ed8198b4a4244 -
Branch / Tag:
refs/tags/v0.14.6 - Owner: https://github.com/STOAGENT
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
upload_to_pypi.yml@263ea781682d5242d0def994e24ed8198b4a4244 -
Trigger Event:
push
-
Statement type: