Skip to main content

Stoneburner

Local-first LLM evaluation: token cost, quality, and security suites.

The PyPI listing is stoneburner-atomics. The CLI and the import stay atomics. (atomics on PyPI is a different package; stoneburner is too similar to an existing stone-burner.)

New here? QUICKSTART — copy-pasteable commands grouped by goal.

Contributing? ARCHITECTURE — layer map, primitives, how to add an eval suite.

Table of Contents

Install

Ollama on http://localhost:11434 is the one-box path. No cloud key required.

uv tool install stoneburner-atomics
atomics doctor
atomics provider-test --provider ollama --no-thinking
atomics toolcall --provider ollama --channel tools --runs 3 --no-thinking

--no-thinking keeps reasoning models from spending the whole token budget on hidden chain-of-thought. A tools-only toolcall run is a valid first run; channel divergence needs a second model as judge.

API, MCP, or RAG extras:

uv tool install 'stoneburner-atomics[api,mcp]'
uv add 'stoneburner-atomics[rag]'          # from another project

From a clone, uv sync --all-extras. Bare uv sync drops the API, MCP, RAG, and test extras.

Cloud providers work the same way once a key is set:

export ANTHROPIC_API_KEY=sk-ant-...
atomics provider-test
atomics run -n 5
atomics report

atomics run --provider openai -n 5
atomics run --provider bedrock --region us-east-1 -n 5

Providers

Provider Flag Install
Claude (Anthropic) --provider claude (default) uv sync
Bedrock (AWS) --provider bedrock --region us-east-1 uv sync --extra bedrock
OpenAI / Codex --provider openai uv sync --extra openai
Ollama (local) --provider ollama uv sync (uses httpx)
brain-gateway --provider brain-gateway uv sync (uses httpx)
Groq (cloud) --provider groq uv sync (uses httpx)
Together AI (cloud) --provider together uv sync (uses httpx)
Google Gemini --provider gemini uv sync (uses httpx)
llama.cpp (local) --provider llamacpp uv sync (uses httpx)
vLLM (OpenAI-compat) --provider vllm uv sync (uses httpx)

Compare providers after running benchmarks: atomics compare — see COMPARING for model classes, metrics fidelity, and judge accuracy.

Optional extras: from PyPI, uv add 'stoneburner-atomics[rag]' (or [bedrock], [openai], [api], [mcp]). From a clone, uv sync --all-extras. RAG is atomics rag-index / rag-retrieval / rag --index. atomics server --with-dashboard serves the read-only UI at /dashboard. atomics mcp proxies a running API server and inherits that server's authentication and spend ceilings. See MCP_SERVER.

Burn Tiers

Tier Tasks Model Interval Budget Tokens/hr
ez Light only Haiku 4.5 300s $5 15k
baseline Light + Moderate Sonnet 4.6 120s $50 100k
mega All (incl. Heavy) Sonnet 4.6 30s $250 500k
uv run atomics run --tier ez -n 3 -i 5
uv run atomics tiers                   # show all tier profiles

Key Commands

Command Description
atomics run Start benchmarking loop
atomics compare Provider/model side-by-side comparison
atomics report Usage reports and trends
atomics eval Quality evaluation suite
atomics adversarial Adversarial resilience eval (72 fixtures)
atomics toolcall Tool-call divergence: refuses in prose, complies via function call (20 fixtures)
atomics redblue Red/blue security capability eval (10 fixtures)
atomics refusal Over- vs under-refusal calibration (12 fixtures)
atomics codereview Planted-vuln detection in snippets and diffs (8 fixtures)
atomics judge-agreement Same generation, N judges; pairwise agreement and majority-flip rate
atomics labcompare Two-host throughput + quality bench-off
atomics stress GPU saturation testing
atomics soak Long-duration stability test
atomics rag RAG pipeline evaluation (grounding, faithfulness, abstention) — also supports real retrieval from an indexed corpus
atomics rag-index Build a sqlite-vec index from local documents for real RAG retrieval
atomics rag-retrieval Measure retrieval quality (recall@k, precision@k, MRR, nDCG@k) from an index
atomics multiturn Multi-turn conversation eval (context retention, coherence)
atomics advisor Cost optimization recommendations from historical data
atomics codegen Code generation eval (functional correctness via test execution)
atomics sweep Overnight multi-suite driver (--suites, --runs 3, status file + detachable log)
atomics doctor Installation health check
atomics server Run atomics as an HTTP API server
atomics mcp Expose atomics to LLM agents over MCP (proxies the API server)

Full reference: CLI_REFERENCE

Security Suites

Six eval suites for LLM security assessment:

Suite What it measures Fixtures
adversarial Resistance to manipulation (prompt injection, jailbreaks, MCP attacks) 72
toolcall Whether a prose refusal survives contact with a function call 20
redblue Offensive/defensive security capability (OSINT, vuln analysis, IR) 10
refusal Over-refusal vs under-refusal calibration 12
codereview Vulnerability detection in code snippets and diffs 8
archreview Security architecture reasoning against whole repos per-repo

Plus probe (live infrastructure analysis) and sweep (multi-model ranked comparison).

Full documentation: SECURITY_SUITES · Leaderboards: adversarial · red/blue

Load Testing

Command Purpose
atomics stress Ramp concurrency to find GPU saturation point
atomics soak Long-duration stability with drift analysis
atomics scenario Mixed-workload simulation with SLA scoring
atomics capacity User load projection from stress data
atomics labcompare Two-host throughput + quality bench-off

Full documentation: LOAD_TESTING

Thinking Mode

Auto-detects reasoning-capable models (Claude extended thinking, OpenAI o-series, Ollama qwen3) and tracks thinking tokens separately.

uv run atomics run --provider ollama -m qwen3:14b -n 5   # auto-detected
uv run atomics run --provider claude --thinking -n 5      # explicit
uv run atomics run --provider openai -m o3 --no-thinking  # forced off for A/B

Full documentation: THINKING

Configuration

Set via environment variables (prefix ATOMICS_) or .env file:

Variable Default Description
ANTHROPIC_API_KEY Claude provider
OPENAI_API_KEY OpenAI provider
ATOMICS_DEFAULT_MODEL claude-sonnet-4-6 Default model
ATOMICS_OLLAMA_HOST http://localhost:11434 Ollama endpoint
ATOMICS_OLLAMA_MODEL qwen2.5:7b Default Ollama model
ATOMICS_OLLAMA_TIMEOUT 300 Per-request timeout (s)
ATOMICS_DB_PATH (platform) SQLite location
ATOMICS_BUDGET_LIMIT_USD 50.00 Cost cap per run

Database defaults: macOS: data/atomics.db · Linux: ~/.local/share/atomics/atomics.db (XDG)

CLI flags (--tier, --budget, --interval) override these at runtime.

Secrets Management

Layered resolution: environment variable → .env file → OS keychain (macOS Keychain / Linux secret-service).

atomics secrets set ANTHROPIC_API_KEY   # store securely (hidden input)
atomics secrets list                    # verify
atomics secrets delete ANTHROPIC_API_KEY

Architecture

stoneburner/
├── atomics/              # Core Python package
│   ├── api/              # HTTP API server (FastAPI) — runs, evals, reports, jobs, dashboard
│   ├── commands/         # Click command modules (auth, admin, benchmark, eval, security, load, api, worker, distributed)
│   ├── distributed/      # Coordinator + worker for split and fleet runs
│   │   ├── coordinator.py
│   │   ├── models.py
│   │   ├── worker_client.py
│   │   ├── worker_runner.py
│   │   ├── routes.py
│   │   ├── rollup.py     # Per-worker aggregation of fleet results
│   │   └── auth.py
│   ├── core/             # Loop engine, task runner, rate/budget guard
│   ├── eval/             # Evaluation framework (eval, adversarial, redblue)
│   ├── probe/            # Live ecosystem probe suite
│   ├── archreview/       # Security-architecture repo benchmark
│   ├── providers/        # LLM adapters (Claude, Bedrock, OpenAI, Ollama, vLLM, brain-gateway)
│   ├── storage/          # SQLite metrics persistence (schema v20)
│   ├── scheduler/        # Cron/systemd/launchd generation and installation
│   └── cli.py            # Thin Click root — registers commands from commands/
├── profiles/             # Custom target profiles (local/ gitignored)
├── qa/                   # QA fixture suites (local/ gitignored)
├── tests/                # 2500+ tests
└── docs/                 # Detailed documentation

See ARCHITECTURE for the full layer map and contributor guide.

Running Tests

The api extra is required to run the suite: the API and distributed test modules import FastAPI at module scope, so without it pytest errors during collection instead of skipping. The mcp extra is not required for collection — those tests skip if the SDK is missing — but CI installs it so the MCP surface is actually tested. Sync it locally too.

uv sync --all-extras
uv run pytest -q
uv run pytest -q --cov=atomics --cov-report=term-missing --cov-fail-under=85

The suite drives FastAPI's TestClient, an in-process shim, so it proves the logic but not that the pieces work as separate processes. For that:

uv run python scripts/smoke_fleet.py

This starts a real coordinator and real worker processes, runs a two-host fleet job against a stubbed OpenAI-compatible endpoint, then kills a worker mid-run to confirm the job resolves to partial instead of waiting on a dead host. It needs no credentials and no model, and touches no real database.

Further Reading

Links are absolute so they work on PyPI as well as GitHub.

Document Description
QUICKSTART Recipe-first guide grouped by goal
CONTRIBUTING Setup, the checks CI runs, and project conventions
ARCHITECTURE Layer map, primitives, contributor guide
SECURITY Vulnerability reporting and operational security considerations
CHANGELOG Version history
RELEASING Release process, versioning and tag conventions
ROADMAP Priorities and future directions
CLI_REFERENCE Full CLI command reference
API_SERVER HTTP API server, authentication, distributed runs, dashboard
MCP_SERVER MCP server for LLM agents, tool surface, trust model
SECURITY_SUITES Security evaluation suites
ADVERSARIAL_SUITES Adversarial fixture flow, scoring, and categories
LOAD_TESTING Stress, soak, scenario, capacity testing
COMPARING Provider comparison, model classes, judge accuracy
THINKING Thinking/reasoning mode internals
LEADERBOARD Adversarial resistance leaderboard
LEADERBOARD-REDBLUE Red/blue capability leaderboard
FRONTIER_COMPARISON Local vs frontier model comparison
INFERENCE_ENV Vendor-neutral inference control file spec

License

MIT — see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stoneburner_atomics-0.18.1.tar.gz (1.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stoneburner_atomics-0.18.1-py3-none-any.whl (480.6 kB view details)

Uploaded Python 3

File details

Details for the file stoneburner_atomics-0.18.1.tar.gz.

File metadata

  • Download URL: stoneburner_atomics-0.18.1.tar.gz
  • Upload date:
  • Size: 1.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for stoneburner_atomics-0.18.1.tar.gz
Algorithm Hash digest
SHA256 03841bb490ee0e80a40c502906f878dbce22a7cc0273f2ec60efaf7366e7eabf
MD5 875bf34bdcc60f6ecd8086d69101cc9a
BLAKE2b-256 acd0125d66c0bbcb8265e8e744bd6fb1bdc600f52c218946eed21309d17461cb

See more details on using hashes here.

File details

Details for the file stoneburner_atomics-0.18.1-py3-none-any.whl.

File metadata

  • Download URL: stoneburner_atomics-0.18.1-py3-none-any.whl
  • Upload date:
  • Size: 480.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for stoneburner_atomics-0.18.1-py3-none-any.whl
Algorithm Hash digest
SHA256 de0fe953da2ecec240f02042e0d6139e1c6fcfaf961121ee31978efaf6f44064
MD5 94655f4d00f1e605ff55947140037401
BLAKE2b-256 a108f000fa9decfcb0659d39f4b93605d94121f07a45396824d1df0b6b06eb71

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page