For developers

Ergod is a real coding agent - just on Discord.

A frontier-model agentic loop, a per-user Docker sandbox, 65 tools, MCP support, GitHub integration, and a web dashboard over the same workspace - reachable from a Discord mention or a browser tab. Here's how the inside works.

Architecture

One agent. One container per user. One conversation per session.

Every message you send gets routed through the same agentic loop you'd build with the Anthropic, OpenAI, or Vercel AI SDKs - except it's hosted, the tools are pre-wired, and the workspace persists across messages.

1. Discord

Slash command or @-mention

Your message hits Ergod's gateway. It checks rate limit, server config, role/channel allowlists, then routes to your container.

2. Session

Conversation state

Your active /session is loaded - full message history, system prompt, tool schemas, MCP-discovered tools merged in.

3. Container

Per-user Docker sandbox

A Linux container with your /workspace volume mounted. Cold start up to ~20s, warm replies 10-15s. Code, files, installed packages - all yours.

4. Loop

Plan → tool → observe → repeat

The model writes code, runs commands, reads files, fetches the web, fixes its own errors. Until it's done.

5. Output

Files in the channel, files in the browser

Finished files attached in the channel. The same files show up in the dashboard file browser, where you can open one in place, download it, or mint a public link. Tool calls and reasoning stream back as they happen, on both surfaces, from one state machine.

Sandbox

Per-user Docker, persistent volume, full Linux.

Each Discord user gets their own container. Not a shared notebook, not an emulated REPL - a real Linux box with disk, network, and an apt of installed tooling.

  • Isolation. Files in your workspace aren't visible to anyone else, even in the same server. Channel sessions are an explicit opt-in.
  • Persistence. The /workspace volume survives across messages, sessions, and restarts. Pip installs stick. Generated files stick. Reset with /workspace reset.
  • Network. Outbound HTTP works - npm, pip, GitHub, web search, MCP servers, the wider internet.
  • Cold start. Up to ~20s on a fresh container. 10-15s when warm. Idle containers hibernate; resume on demand.
  • Storage. 1 GB on Free, 5 GB on Pro, 10 GB on Pro+. Channel sessions get their own quota.
your container
$ uname -a
Linux ergod-u-487a 6.1 #1 SMP x86_64 GNU/Linux

$ which python node go cargo
/usr/local/bin/python
/usr/local/bin/node
/usr/local/go/bin/go
/root/.cargo/bin/cargo

$ ls /workspace
README.md  site/  scripts/  game_state.json

$ pip install pandas
Successfully installed pandas-2.2.3
# (still installed next message)

$ curl https://api.github.com/zen
Anything added dilutes everything else.
Built-in tools

65 tools already wired in.

Every tool is exposed as a structured tool call to the model - same schema as the Anthropic API, same patterns as Claude Code or aisdk.dev. You don't configure any of it.

Filesystem

Read

Read a file with offset/limit pagination. Aliased as read_file.

Write

Create or overwrite a file in the workspace. Aliased as write_file.

Edit

Surgical find-and-replace with unique-string anchoring. Aliased as edit_file.

MultiEdit

Several anchored edits to one file applied as a single operation.

Glob

Find files by pattern. Aliased as list_files.

Grep

Ripgrep-backed regex search over file contents, with context lines.

Code execution

Bash

Arbitrary shell inside the container - pipes, env, subshells, all of it. Also how git and gh run.

REPL

Persistent Python or Node interpreter. Variables, imports and state survive across calls, unlike Bash. Self-hosted only - it runs on the host rather than inside your container, so it is blocked on the hosted product and the model never sees it.

CodeOutline

Structural outline of a source file - symbols and signatures without reading the whole thing.

LSP

Python language server: go-to-definition, references, hover, diagnostics, rename. Loads on demand.

Web

WebSearch

Live search. Returns titles, URLs and snippets only - the agent follows up with WebFetch.

WebFetch

Fetch a URL as clean text. Falls through to a headless browser when a site blocks the fast path or renders via JS.

BrowserNavigate

Drive a real headless browser - navigate, click, fill, evaluate. On demand, behind a ToolSearch lookup.

BrowserScreenshot

Screenshot the page the browser is on, returned to the model as image input.

Getting artifacts out

Attach

Deliver workspace files to you in the channel - one file, a batch, or a zipped bundle. This is the delivery path; there is no hosted-preview tool.

GenerateImage

Generate an image into the workspace, then Attach it.

Skill

Load a saved skill - a reusable instruction bundle you registered with /skill add.

Memory & sessions

MemorySave

Persist a fact about you across sessions and conversations.

MemorySearch

Keyword, semantic or hybrid recall over stored memories.

MemoryList

List everything currently stored about you.

MemoryDelete

Delete a stored memory by name.

SessionSearch

Search across your past sessions for something you already worked on.

Planning & delegation

EnterPlanMode

Plan a large change and get your sign-off before touching files.

TodoWrite

Track multi-step work in the open, so you can see where a long task is.

Agent

Delegate an isolated sub-task to a sub-agent. On demand, behind a ToolSearch lookup. Pro and above - Free runs one agent at a time.

ToolSearch

The lazy-loader itself. Specialized tools stay dormant until the model asks for them by name.

These are real registered tool names, as the model sees them — a representative selection, not the whole inventory. The registry holds 75 tools; 10 are blocked on the hosted product because they run outside your container, leaving 65reachable from Discord. All 65 are listed on the How it thinks page. Git and GitHub are not separate tools: after /github link, the agent runs ordinary git and gh through Bash with your token in the environment. Sharing a file on a public URL is a dashboard action, not a tool - see below.

MCP - bring your own tools

Anthropic's Model Context Protocol, fully supported.

Connect remote HTTP MCP servers (Linear, Sentry, Supabase, Notion, Stripe, your own) - or run stdio MCP servers directly inside your sandbox. Discovered tools merge into the model's tool list on the next turn.

Remote MCP (HTTP)

Streamable-HTTP transport. OAuth or bearer-token auth. Ideal for SaaS connectors with managed servers.

/mcp add
  name: linear
  url:  https://mcp.linear.app/sse

→ Connected linear.
→ Discovered 7 tools, 2 resources.
→ Available on next turn.

Stdio MCP (in-container)

The server runs as a child process inside your sandbox. Talks JSON-RPC over stdin/stdout. Perfect for npx/uvx servers.

/mcp add-stdio
  name:    fs
  command: npx -y @modelcontextprotocol/server-filesystem /workspace

→ Launched fs.
→ 11 tools available.

Share an MCP server with a whole channel

In a channel session, run /mcp share name: linear as the sponsor and every collaborator in that channel gets access to your Linear connector - without sharing the token. Revoke any time with /mcp unshare. Tokens, headers, and URLs are never visible to other users.

GitHub

Link once. Commit, push, PR from a chat message.

01

Link a PAT

One-time. /github link with a Personal Access Token. Validated against GitHub's API, then encrypted at rest. Per-user - never shared.

02

Reference a repo

Just say it. “Clone vercel/next.js, find the App Router code, and explain the dynamic-route resolver.”

03

Make changes

Ergod edits files in the cloned repo, runs tests, and shows you the diff before committing.

04

Push or PR

Commit, push to a feature branch, open a PR with a real description, and drop the PR link in chat.

05

Iterate

Reply to redirect: “rename the variable, update the test, repush.” Same conversation, same workspace, same branch.

Security model

Isolation by user. Encryption at rest. Audit by design.

Per-user containers

Your workspace is a Docker container only your Discord user can address. No shared volumes. Channel sessions are an explicit, sponsor-confirmed exception.

Encrypted credentials

GitHub PATs, MCP bearer tokens, OAuth access tokens - encrypted at rest with per-tenant keys. Never logged, never returned to the model in plaintext.

Mention scrubbing

@everyone, @here, and role pings are stripped from Ergod's replies by default. Toggleable per-server.

Role & channel gating

Admins can allowlist/blocklist channels and roles. Combine with Discord's native permission system for fine-grained control.

No model retention

We don't train on your messages. Conversation history is yours; delete a session to wipe it.

Open feedback loop

Every release, every limit, every bug - discussed openly in the Discord. Tell us what to harden.

Limits & quotas

What you get on each tier.

Quotas are per Discord user. A user's tier travels with them across every server that has Ergod. Daily usage is denominated as a percentage of each tier's budget — heavier tasks consume more, casual chat barely registers. New accounts get a one-time welcome boost worth 3 days of Free's daily usage on top of any tier — persistent, used last, never expires.

FreeProPro+
Daily usagebaseline + welcome boost5× Free10× Free
Cap windowdailyrolling 7-dayrolling 7-day
Workspace storage1 GB5 GB10 GB
Image input
GitHub integration
MCP (remote + stdio)
Web dashboard (chat, files, viewer, public links)
Slash commands in the web composer
Persistent memory
Direct DMs to Ergod
/collab personal workspace-
Sponsor channel sessions-
Premium model selection (/model set)-✓ · same set as Pro
Sub-agents (parallel work on one task)-
Container idle timeout15 min60 min60 min

Pro and Pro+ differ on two rows and match on every other one, which is the honest shape of the tier: Pro+ is a volume tier. It doubles the usage budget and doubles the workspace, and Pro+ subscribers get priority support from us. Same models, same sub-agents, same social layer, same idle timeout. Take it when you are running out of room on Pro — not to unlock anything, because there is nothing behind it to unlock.

Why not roll your own?

You can - we did, so you don't have to.

Building this in-house means a Discord bot, a queue, a sandbox runtime, GitHub OAuth, MCP plumbing, a web dashboard, model routing, billing, and a year of iteration. Or:

Roll your own

Open-source agents exist - but you'll be on the hook

  • Install and configure it locally
  • Maintain your own codebase as agents evolve
  • Debug your own quirks and edge cases
  • Pay for model API directly - agentic loops add up fast
  • Host the bot on your own hardware, 24/7
  • Set up your own GitHub OAuth, MCP plumbing
  • No sandbox isolation - runs on your machine
  • Hard to share with friends safely or securely

Try the agent. In 30 seconds.

Free tier covers everything technical - sandbox, GitHub, MCP, memory, the web dashboard. Drop in, ship something, decide later.