Always on.
An always-on orchestrator-agent

An agent that runs while you sleep.
Sandboxed. Budgeted. Earns autonomy gradually.

Chad reads your mail, drafts replies, runs nightly automations, and remembers everything you tell it — all inside a kernel-isolated sandbox that never sends anything you haven't allowlisted. Start free in your browser, or self-host the whole stack. The autonomy boundary is a config file; the kill switch is a single touch.

Free tier: 50 messages a day. No card required. Top up with credits or go premium anytime.

What Chad is

Three properties that define the design — every architectural choice traces back to one of them.

Always on

Cron is the agent's contract with the day

Twelve standing cron jobs check mail, sweep the brain nightly, audit the budget weekly, propose memory consolidations on Saturdays, apply narrow self-tunings daily, and — newest — run an autonomous experiment loop nightly that scans memory for tasks worth automating and either keeps or retires them per a regression threshold. Each cron is a one-line wrapper invocation; heavy work happens inside the wrapper, not in the prompt. Three host-side launchd watchdogs supervise the pod from outside (gateway, chat-shim, spawn-poll) so token-expensive supervision moves off the agent.

Delegates safely

Sub-agents draft, parents publish

Seven sub-agent kinds, each pinned to a binary path under an L7 network policy. A reviewer kind is GET-only on GitHub — it can read PR diffs but cannot post. Spawns can route to a kernel-isolated GitHub Actions runner per job for substrates where in-container execution is too coarse. Multi-step work runs as durable Smithers workflows with crash-resume and approval gates — a second orchestrator bridged to the same spawn substrate.

Earns autonomy

Every irreversible action runs through a gate

An auto-actions.json policy file is the visible map of what Chad can do today. auto ships immediately, draft parks for review, block means no. A kill-switch file at .auto-disabled halts everything in one touch.

Three concentric rings

A naked CLI agent has no blast radius story. Chad runs inside three boundaries — host, container, sandbox — each with a different threat model and a different answer to "what happens if a prompt-injection rewrites the next instruction."

HOST · MACOS / LINUX nemoclaw CLI · credentials · launcher CONTAINER · OPENSHELL GATEWAY capsh drops · L7 proxy · OPA policy SANDBOX · PER-BINARY EGRESS Chad · pi · claude · gh · curl · gbrain 7 sub-agent kinds · 12 cron jobs · 3 host watchdogs Memory: lancedb + wiki + gbrain + workspace Substrate: local · GitHub Actions runner → GHA
  • L1 · HOST
    nemoclaw CLI · credentials · launcher

    Operator's machine. Holds creds, runs the launcher, hosts the Cloudflare tunnel.

  • L2 · CONTAINER
    OpenShell gateway · capsh drops · L7 proxy

    Capability drops at entrypoint. L7 proxy validates every egress. Policy hash-checked at boot.

  • L3 · SANDBOX
    Chad + per-binary egress allowlists

    Each binary is pinned to a network policy. Compromised writer can't reach GitHub. Compromised reviewer can't post.

  • L3.5 · BREAKOUT
    GitHub Actions runner per spawn

    Kinds tagged substrate: gha spawn into a fresh runner for the job. True per-spawn isolation; loses L7 enforcement.

Four memory layers

Each store has a different shape and a different job. They don't compete; they layer. The decision tree for "where does this fact go" is three lines.

workspace files (always-injected)

The agent's identity

SOUL · USER · IDENTITY · AGENTS · TOOLS · MEMORY · HEARTBEAT — char-bounded markdown loaded into every main session. Operator-owned. Never overwritten by automation.

memory-lancedb (semantic LTM)

Fuzzy episodic recall

NVIDIA NV-Embed-v1 at 4096 dims. autoCapture fires on multilingual triggers (remember/preferences/decisions/contact). autoRecall injects relevant memories before each turn.

memory-wiki (named-entity)

Look up by name

Obsidian-style vault in bridge mode. Page per system / correspondent / recurring topic. Backlinks form a graph. Populates organically as the agent captures structured artifacts.

gbrain (cross-domain hybrid)

Vector + graph knowledge

PGLite-backed; subprocess CLI only (file-locked, single-process). Two books fully ingested for the fitness sub-agent kind. Daily dream cycle consolidates and re-extracts.

Highlighted features

A non-exhaustive tour. The full surface lives in the docs.

Three feedback loops

Curator + budget audit + proposal apply

A weekly Hermes-style curator proposes memory consolidations (draft-only). A weekly budget-audit rolls up last-50-runs telemetry into feedback-proposals.md. A daily chad-proposal-apply applies a narrow safe-list of cron tunings — gated by chad-action-gate, snapshots first.

Popebot-style spawn

Branch-as-job-record

Sub-agent spawns can target a GitHub Actions runner. Each spawn is a branch in a private state repo carrying prompt + manifest; the runner commits result back. Async mode returns task_id immediately and a poller cron reconciles when the work finishes.

Durable workflows

Two orchestrators, bridged

Alongside one-shot sub-agents, Chad runs durable JSX workflows on Smithers with a web IDE at runs.supachad.com — SQLite-backed run history, crash-resume, a .jsx editor, and the experiment leaderboard. The multi-step spawn + cron features are ported (issue-triage, content-pipeline, self-improve, memory-curator, log-digest) — crash-resumable, with approval gates, shadow-safe by default. A runSpawn() bridge offloads heavy steps to a GHA runner over the same branch-as-job-record machinery. fusion.jsx fans one prompt across every model in the NVIDIA catalog (auto-refreshed daily) then fuses the best answer.

Provider routing

NVIDIA fallback, no provider lock-in

OpenAI-compatible binaries (codex, opencode) auto-pick OpenAI when the key is set, fall back to NVIDIA Nemotron via integrate.api.nvidia.com when it isn't. Claude requires Anthropic; everything else is portable.

Pre-mutation snapshots

Reversible, by default

Before the curator (or any bulk memory op) mutates anything, lancedb + wiki + workspace get tar.gz snapshots. Last 5 retained. Rollback is itself reversible — it snapshots current state first.

Action gate

The autonomy boundary, in JSON

Every external action passes through chad-action-gate. Per-target overrides — operator@example.com: auto, _default: block. Daily counters. Audit log. Touch .auto-disabled to halt everything.

Honest about cost

500k tokens/day, UTC reset

Honor-based budget (the kernel doesn't enforce — that's the inference rate-limiter's job). Every cron has a budget guard; sub-agent spawns reserve before launching. Weekly audit rolls up p95 latency by kind and proposes timeout adjustments.

Premium escalation

Anthropic, behind a binary-pinned wall

For tasks where Nemotron's depth runs out, Chad escalates to Claude through chad-premium. The L7 proxy pins both the wrapper *and* the curl invocation, so a compromised Python script can't reach api.anthropic.com. AuthContext is required; cron ticks with no inbound trigger fail closed.

Deliberate non-goals

What Chad won't do, on purpose

Some limits are permanent by design, not gaps. github_pr_merge: auto stays blocked (a merge is irreversible and synthesizes CI signal humans should gate). self_modify_identity: auto stays operator-only (SOUL.md / IDENTITY.md / USER.md are yours). And Chad-as-a-product: this is a single-operator agent, not a multi-tenant service.

Host it on your own machine

Chad runs in a sandbox on your hardware. The reference deployment is a Mac M4 Pro with Docker Desktop; any host that runs Linux containers with k3s or Docker works. Two surfaces ship with the project: the chat surface (Open WebUI, behind a Cloudflare Tunnel, with Chad exposed as an OpenAI-compat model) and the workflow surface (the runs IDE for durable Smithers runs).

Runs IDE — the seven-tab Smithers workflow dashboard Directives tab — operator steering plus the live DB-signal digest that feeds Chad's self-improvement loop
The workflow surface at runs.supachad.com — run history + the Directives loop that lets Chad improve himself nightly.
Chat surface, included

Open WebUI ships in the box

A docker-compose stack under scripts/openwebui/ brings up Open WebUI behind a Cloudflare Tunnel and exposes Chad as a model named chad. Two modes: --mode=quick (ephemeral trycloudflare.com, MVP) and tunnel mode (managed CF Tunnel + Cloudflare Access SSO).

One brain, four surfaces

The shim is dumb on purpose

chad-shim.py is ~200 lines of stdlib Python listening on 127.0.0.1:8901. Each chat turn becomes one openclaw agent invocation against Chad's main session — same memory, same action gate, same network policies as a cron or a sub-agent spawn.

Self-healing

launchd keeps it alive

npm run webui:chad:install deploys a persistent launchd LaunchAgent with KeepAlive=true. chad-setup, chad-restore-from-github, and chad-backup-to-github each self-heal a crashed shim, so any cron pulse resurrects it.

Built on

Chad is glue. The pieces below do the actual work.

Recent ships

A live(-ish) feed of what landed on chad-dev. The full sequence is in the changelog.

2026-10-14
Approve Chad's work from your phone + self-healing recoveryWhen a Chad workflow pauses for sign-off, an Approve/Deny card lands on your phone through Moshi — one tap approves (or denies) and the run carries on, and each card says exactly what approving will do. Recovery after a host reboot is now codified end to end: health checks that can't be fooled by an empty memory store, restores that never overwrite live state, and Chad's full knowledge base (4,000+ pages) restored and re-indexed. All of Chad's custom skills ship on every deploy, and email auto-replies strictly honor the action gate.
2026-10-06
Chad is now a hosted app — free tier, credits & premiumSign up at supachad.com and launch at chad.supachad.com. A free tier (50 messages a day, no card), pay-as-you-go credits via Square hosted checkout, or premium for unlimited messages. New signup + onboarding flow, an atomic credit ledger on Cloudflare D1, and per-message metering with a live "credits remaining" readout in chat — when the free allowance runs out you're prompted to top up or upgrade.
2026-10-04
Caught up with upstream NemoClaw (4,928 commits) + renamed to supachadMerged ~5 months of NVIDIA/NemoClaw — 4,928 commits — resolving 29 conflicts while preserving Chad's network policies, gbrain/gstack plugins, and live version pins. The fork is now tantodefi/supachad. Added a lean, fork-friendly CI gate (typecheck + config validation on every push) and a weekly, PR-gated upstream-sync so the fork stays current automatically.
2026-10-01
In-browser terminal, OpenWebUI v0.11.4, free-tier limit, gbrain embed rescueA real WebVM + Docker terminal inside OpenWebUI, with an agent bridge so Chad can type commands you watch live. chad-webui wired to the OpenWebUI 0.11.4 API (calendar, notes, automations, memories). A per-user free-tier daily message cap. And a gbrain rescue — migrated embeddings off an EOL model to nemotron-3-embed-1b after the old endpoint 410'd, restoring semantic search.
2026-07-07
chad-ops dispatcher + mobile runs IDE + allowlist hardeningchad-ops.sh codifies the recurring pod operations — doctor (read-only health), recover (idempotent cold-start), deploy, gate-sync — so a half-finished recovery finishes by just re-running. The runs IDE got a responsive mobile layout with a hamburger nav, and the Chad-lite operator allowlist gate is now fail-closed and hardened.
2026-07-06
landing-lab, opencode coding pipeline, Moshi phone pushA grounded marketing-copy lab: nemotron distills the real docs into a claim→source fact sheet, opencode writes landing variations using only those facts, and nemotron flags any unbacked claim. A validated opencode build loop (plan → code → validate → assess) with an approval gate and optional draft PR. Moshi phone push via a device-token webhook — works from cron, no Pro.
2026-06-16
Runs IDE for Smithers workflows + model fusionA web IDE over the Smithers run DBs: run history, a live task tree, a .jsx editor, the experiment leaderboard, and browser launch/cancel/approve/fork — fail-closed behind Cloudflare Access. New fusion runs a prompt across N models in parallel then fuses the best, with the roster auto-refreshed daily from NVIDIA's model list.
2026-06-13
Nemotron 3 Ultra 550B + evolutionary experimentsA host-side Smithers runner (chad-smithers) runs an evolutionary experiment loop — start wide, score candidates in parallel, keep only what works — crash-resumable, posting a nightly leaderboard to OpenWebUI. Moshi hooks for phone notifications + approval; chad-tmux for phone-attachable host sessions.

Pricing

Start free with a daily credit allowance. Top up pay-as-you-go when you need more, or go premium for unlimited messages. No card to start.

Free
$0
  • 50 free messages a day (Chad Lite)
  • Resets at 00:00 UTC — no card required
  • Your own assistant with a personal memory only you can see
  • Web search + a dozen open models (Llama, Gemma, GLM, Nemotron…)
  • When you run out, top up or upgrade
Start free
Credits
from $5 pay-as-you-go
  • 1 credit = 1 message, no daily cap
  • Packs of 1,000 or 5,000 credits
  • Credits never expire
  • Secure checkout via Square
Buy credits

Get started

Three steps from here to a running agent.

Create your account

Drop your email below and pick a plan. Free needs no card.

Get access

Free accounts are reviewed by hand; once approved we email you a single-use access link. Paid plans are activated right after checkout.

Launch & chat

Open the app, start chatting. Free gives you 50 messages a day; buy credits or go premium for more.

Spin up your always-on agent.

50 free messages a day, no card. Top up or go premium when you're ready.