Weekly Recap · March 27 – April 2, 2026
Digital Twin
Universe
What we built this week: a CLI, declarative profiles, two agents,
and an end-to-end pipeline that answers "does this actually work when deployed?"
Alpha
microsoft/amplifier-bundle-digital-twin-universe · April 2026
The Problem
"Tests pass" is not
"this actually works"
What agents verify today
- Code compiles
- Unit tests pass
- API tests return 200
- Agent says "it works"
What nobody checks
- Can a real user install it?
- Does the UI actually render?
- Do all the dependencies resolve?
- Does it work outside the dev machine?
AI-generated software is verified in the environment it was built in. Context poisoning, dev-machine-specific setup,
and skipped deployment details mean the gap between "tests pass" and "a human can use this" stays open.
The Solution
One profile.
One command.
A complete world.
A single YAML profile declares everything needed: base image, source overrides, networking,
port forwarding, provisioning steps, and readiness checks. Profiles are self-contained and shareable —
anyone can launch an identical environment with one command.
# Launch an environment
$ amplifier-digital-twin launch amplifier-chat
# => {"access": [{"label": "Chat UI", "url": "http://localhost:8410/chat/"}], ...}
# Open in browser, interact immediately
$ open http://localhost:8410/chat/
Profile Anatomy
Declarative, self-contained, shareable
# profiles/amplifier-chat.yaml
name: amplifier-chat
base:
image: ubuntu:24.04
access:
ports:
- host: 8410
container: 8410
label: Chat UI
path: /chat/
passthrough:
allow_external: true
services:
- name: anthropic
key_env: ANTHROPIC_API_KEY
provision:
setup_cmds:
- apt-get update && ...
- uv tool install ...
readiness:
- name: amplifierd-ready
http:
url: http://localhost:8410/ready
📦
Base Image
Any container image. Ubuntu 24.04 default.
🌐
Port Forwarding
Incus proxy devices to localhost. WSL2-seamless.
🔒
API Passthrough
Real APIs proxied with forwarded credentials.
✅
Readiness Checks
Launch blocks until the environment is usable.
Automated Verification Pipeline
From repo to verified UI — fully automated or hands-on
Three components form a pipeline: the profile-builder generates and launches an environment,
readiness checks ensure it's actually up, and the browser-tester verifies the UI works.
All without user intervention.
🔧
Profile Builder
Explores repo, generates
YAML, launches env
→
💚
Readiness Checks
Health probes block
until env is live
→
🌐
Browser Tester
Real Chromium verifies
UI end-to-end
→
✅
Verified
"This actually works
when deployed"
Or a user can open a browser and try it themselves. Either way, the question answered is
"does this actually work when deployed" — not "do the tests pass."
Agent: Profile Builder
Point at a repo. Get a running environment.
The dtu-profile-builder agent takes a repository, explores
its structure — ports, dependencies, environment variables, services — generates a complete
profile, launches it, and hands back access details.
The developer never writes YAML or thinks about container configuration.
The agent does the translation from "here's my code" to "here's your running environment."
434 lines of agent instructions
Repo analysis
YAML generation
Auto-launch
# User's perspective:
"I built a FastAPI app at ~/my-api.
Help me test it in a real environment."
# Agent:
# 1. Explores the project structure
# 2. Identifies ports, deps, env vars
# 3. Generates a DTU profile
# 4. Launches the environment
# 5. Waits for readiness
# 6. Returns access URL
Result:
http://localhost:8000 ✓ ready
Agent: Browser Tester
Real browser. Real clicks.
Real verification.
The dtu-browser-tester agent drives a real Chromium browser against
web UIs inside the environment — navigating, clicking, filling forms, taking screenshots.
This isn't unit testing or API testing. It's verifying that a human user would see a working app.
Launch a digital twin of amplifier-chat and have an agent verify the entire UI works end-to-end —
without a human ever opening a browser.
330 lines of agent instructions
Chromium automation
Screenshots
E2E UI verification
📷
Visual Verification
Takes screenshots at each step. The agent sees what a user would see.
🖱
Full Interaction
Navigates pages, clicks buttons, fills forms — exercises the real user workflow.
🚫
No Retry Loops
Readiness checks guarantee the environment is up before the browser ever connects.
Human Access
Open a browser. Use the app.
It's running in a twin.
Profiles forward ports from the Incus container to localhost, so users can interact with apps
running inside the environment as if they were local.
- The amplifier-chat profile forwards port 8410 to localhost
- On WSL2, Windows auto-forwards WSL2 localhost ports to the Windows host
- No tunneling, no SSH, no manual port mapping required
# Launch the digital twin
$ amplifier-digital-twin launch amplifier-chat
# Access returned in JSON output:
{
"access": [{
"label": "Chat UI",
"url": "http://localhost:8410/chat/"
}]
}
# Open in your browser - it just works
$ open http://localhost:8410/chat/
Amplifier Bundle
Not just a CLI — a composable bundle
Digital Twin Universe is an Amplifier bundle. When composed into a session, it brings along a skill file,
context awareness, and two agents — so the model natively knows what digital twins are,
when to suggest them, and how to drive the CLI.
🧠
Skill
111-line skill provides installation help, profile authoring guidance, and troubleshooting — surfaced automatically when relevant.
🤖
Two Agents
dtu-profile-builder and dtu-browser-tester can be delegated to within any Amplifier session. The model knows when to reach for them.
💬
Natural Language
"I built a web app, help me test it" — the model knows to reach for the profile-builder. No CLI knowledge needed.
# Install as an Amplifier app bundle
$ amplifier bundle add \
git+https://github.com/microsoft/amplifier-bundle-digital-twin-universe@main \
--app
Profiles Shipping Today
3 profiles — real environments, real verification
💬
amplifier-chat
Full Amplifier Chat web UI backed by amplifierd. Port 8410 forwarded to localhost. Anthropic API passthrough. Readiness check on /ready endpoint.
58 lines
Port forwarding
Browser-accessible
👨💻
amplifier-user-sim
Simulates an Amplifier user environment: LLM API passthrough, repos served from Gitea, Amplifier CLI installed, Anthropic provider pre-configured.
79 lines
Gitea integration
Full user simulation
🧩
amplifier-user-sim-single-module
Lightweight variant for testing individual Amplifier modules in isolation without the full user environment.
49 lines
Module-focused
Get Started
Try it.
# Install the CLI
$ uv tool install git+https://github.com/microsoft/amplifier-bundle-digital-twin-universe@main
# Install as Amplifier bundle
$ amplifier bundle add git+https://github.com/microsoft/amplifier-bundle-digital-twin-universe@main --app
# Launch your first digital twin
$ amplifier-digital-twin launch amplifier-chat
github.com/microsoft/amplifier-bundle-digital-twin-universe