Testing against the real world without the real world.
Most real software integrates with external services. Testing those integrations creates friction that kills velocity.
Slack alone needs: an account, an app registration, a workspace, OAuth tokens. Multiply that for every environment.
Real APIs have quotas. In a software factory where agents constantly create and tear down environments, you burn through limits fast.
Throwaway accounts, manual configuration, cleanup after every test run. Non-starter for agent-driven development.
Traffic destined for a real API hostname gets transparently redirected to the mock container. The application under test is installed completely unmodified. It genuinely believes it's talking to the real service.
amplifier-hive-slack is a bot that integrates with Slack's APIs. To test it for real, you need a Slack account, an app registration, a workspace, OAuth tokens — and you're subject to rate limits. In a software factory where agents are constantly creating and tearing down environments, that's a non-starter. So we built a mock.
11 endpoints (GET + POST): auth.test, apps.connections.open, conversations.info, conversations.list, conversations.history, chat.postMessage, chat.update, reactions.add, users.info, bots.info, team.info
Full Socket Mode support: hello handshake, event envelopes, ack responses, ping/pong keepalive. mitmproxy rewrites the WebSocket URL so the bot connects via TLS transparently.
Endpoints for simulation: /mock/state, /mock/send-message, /mock/add-reaction, /mock/create-user, /mock/create-channel. Full programmatic control.
Vanilla HTML/JS interface at / with channel list, message feed, and input. Interact with the mock directly from your browser.
The profile is the single source of truth: what to install, which mocks to wire up, which real APIs to allow through, and how to start the app.
"Look at amplifier-hive-slack and make me a Digital Twin Universe that will let me try it out with a mock Slack."
api.slack.com → mock containerWhen the bot wasn't replying as expected, the next step was natural: "Amplifier, can you try x, y, z and simulate some users so I can see how it's working."
Seed channels, users, message history however you want. Create-user and create-channel endpoints let you build any workspace topology on demand.
Send messages, trigger events, simulate multiple users — all through the Control API. Automate entire conversation flows with a shell script.
No rate limits, no accounts to create, no cleanup. Run as many times as you want. Tear down and rebuild in seconds.
The multi-workspace demo launches 4 DTU environments, each with unique channels, users, and seeded conversations — including bot responses — with live message scripts firing in real time.
4 users, 3 channels (#general, #tech-stack, #pitch-prep). A team building a meal-prep app in 47 hours. The bot helps scope features and structure the pitch.
4 users, 4 channels (#general, #bugs, #playtesting, #art-assets). An indie game studio preparing for Steam Next Fest. The bot helps debug gameplay and optimize shaders.
4 users, 4 channels (#general, #paper-drafts, #experiment-results, #reading-group). A research team racing toward the ICML 2026 deadline. The bot reviews paper drafts and suggests experiments.
4 users, 4 channels (#general, #maintenance, #events, #lost-and-found). A neighborhood association managing everything from fence disputes to block party planning.
Combined with the browser-tester agent, mock services create a full verification loop — all without touching a single real external service.
Once someone builds a mock, everyone can use it. The profile just declares what it needs and DTU handles the rest: clone, build, start, DNS rewrite, ready.
The framework is designed to be shared. Mocks are standalone repos with a standard digital-twin-mock.yaml definition. The same pattern extends to any external service.
Tell Amplifier:
"Make me a DTU with a mock Slack so I can try amplifier-hive-slack."
Add mock_services to any DTU profile and point it at a mock repo.
Create a repo with a digital-twin-mock.yaml and a Dockerfile. That's the contract.
./demos/launch-multi-workspace.sh to see 4 workspaces come alive.