Amplifier
Digital Twin Universe

Phase 1: A complete, isolated environment stood up on demand that simulates the world your code will live in.

David Koleczek · March 2026
The Problem

The AI Confidence Gap

👨‍🍳
AI on its own code
Chef's kiss.
"All tests pass."
🏚️
User tries it
Jenga tower
collapse.

AI-generated software is verified in the environment it was built in. There's a gap between "tests pass" and "this actually works in a real-world scenario."

The Problem

Why "works on my machine" gets worse at scale

🧪

Context Poisoning

Agents claim things work because they have full context of what they just built. A real user starts from zero.

📦

Deployment Blind Spots

Issues go unsolved because agents aren't forced to consider deployment details — packaging, installs, configuration.

🚫

External Service Hell

Integrating with Teams, Slack, or GSuite requires real accounts, app registrations, and rate limits. Unsustainable at scale for a software factory.

The Solution

Digital Twin Universe

A complete, isolated environment stood up on demand from a declarative profile that simulates the world the code will live in.

"What will reality be like if this was actually deployed?"

How It Works

One YAML profile declares everything

🌐

URL Rewrites

mitmproxy-based redirection. GitHub URLs resolve to local Gitea repos transparently.

📦

PyPI Overrides

Build wheels from local source, serve via local pypiserver. pip/uv see your modified packages.

🔑

Passthrough

Forward real API keys (Anthropic, etc.) into the environment. No mocking needed for stateless services.

⚙️

Provisioning

Setup commands to install tools, configure software, prepare the environment exactly as a real user would.

Profile

amplifier-user-sim.yaml

name: amplifier-user-sim base: image: ubuntu:24.04 url_rewrites: rules: - match: github.com/microsoft/amplifier-module-provider-anthropic target: ${GITEA_URL}/admin/amplifier-module-provider-anthropic pypi_overrides: packages: - name: amplifier-core wheel_from_git: repo: ${GITEA_URL}/admin/amplifier-core.git build_cmd: uv run --with maturin maturin build --release passthrough: services: - name: anthropic key_env: ANTHROPIC_API_KEY
Demo

Validating local changes as if a real user installed Amplifier from scratch

1

Create a Gitea instance, mirror repos

Mirror amplifier-core and amplifier-module-provider-anthropic from GitHub into an ephemeral Gitea instance.

2

Push local changes to Gitea

Bump the amplifier-core version, add a print statement to the provider module. Changes live only in Gitea.

3

Launch the Digital Twin

amplifier-digital-twin launch amplifier-user-sim --var GITEA_URL=... --var GITEA_TOKEN=...

4

Install Amplifier inside the twin

uv tool install git+https://github.com/microsoft/amplifier — exactly as a real user would.

5

Verify changes are live

Run Amplifier. The modified amplifier-core wheel and rewritten provider are active — transparently.

Key Insight

The software inside the Digital Twin has no idea it's in a twin.

It thinks it got everything from PyPI and GitHub. No special configuration. No test flags. Just reality, redirected.

Architecture

Components

👤

Consumer

Human or agent manages lifecycle: create / destroy

📄

Profile

YAML declares what the universe contains

📦

Incus Container

Isolated OS environment (Ubuntu 24.04)

🌐

mitmproxy

Transparent URL rewriting

🐍

pypiserver

Serves locally-built wheels

🔑

Passthrough

Forwards real API credentials

🎯 Exec

Run commands or get an interactive shell inside the environment.

👁️ Observe

Monitor what's happening — logs, network, processes.

🎭 Simulate

Drive user-like interactions from the outside.

CLI

CLI-first, JSON output

# Launch an environment from a profile $ amplifier-digital-twin launch my-profile # Execute a command inside it $ amplifier-digital-twin exec dtu-a1b2c3d4 -- amplifier --version # Interactive shell $ amplifier-digital-twin exec dtu-a1b2c3d4 # Tear it down $ amplifier-digital-twin destroy dtu-a1b2c3d4

All commands return JSON to stdout for programmatic consumption. Built for humans and agents alike.

Current Features

What's working now

✅ Profile-driven environments

Declarative YAML profiles define complete environments. Self-contained and launchable.

✅ mitmproxy URL rewriting

Redirect GitHub URLs to Gitea transparently. The software inside never knows.

✅ PyPI package overrides

wheel_from_git, wheel_path, wheel_var — multiple ways to serve modified packages.

✅ API key passthrough

Real external services (Anthropic, etc.) are accessible inside the twin with forwarded credentials.

✅ Ephemeral lifecycle

Create, use, destroy on demand. Clean simulation every time.

✅ E2E tests

Full end-to-end tests proving the complete flow works — from launch through install to verification.

Scenarios

What you can validate today

Future Vision

What's coming next

🏢

Mock Service Catalog

Pre-built mock services for M365, Slack, GSuite. Unlimited use without rate limits, app registrations, or cost.

🖥️

Human Access

Graphical access — remote desktop or browser sessions. You can already exec into the container; this is about GUI-level interaction.

🤖

Agent Interaction Surfaces

browser-tester, terminal-tester integration. Agents drive "as a user" experiences through the same surfaces as humans.

🌍

DNS Rewriting

Full domain-level simulation. Mock services addressable by their real-world hostnames.

Try It

Get started

# Install the CLI $ uv tool install git+https://github.com/microsoft/amplifier-bundle-digital-twin-universe@main # Launch your first Digital Twin $ amplifier-digital-twin launch my-profile

github.com/microsoft/amplifier-bundle-digital-twin-universe

More Amplifier Stories