Digital Twin Universe

Launch Once.
Update in Place.

Isolated environments that evolve with your code, verify themselves end-to-end from the host, and stay out of your way.

Documentation

Standalone Install Guides

Extracted installing-incus.md and installing-docker.md as single sources of truth. No more scattered prerequisite instructions — one file per tool, covering every supported platform.

Platform-Specific Steps

Install instructions for Ubuntu, WSL2, and macOS. Each platform gets its own section with tested commands and expected output.

Docker Coexistence Fix

Documents the networking conflict between Docker and Incus and provides the fix. Verification steps confirm both tools work side-by-side.

Troubleshooting Tables

Common failure modes with symptoms, causes, and fixes in a scannable table format. Agent instructions included for one-command-at-a-time output.

Documentation

Skill and Doc Cleanup

Streamlined SKILL.md and the awareness context. Removed duplication, added missing references, and made agents self-sufficient for verification.

SKILL.md Overhaul

Added mock-authoring.md reference for mock service discovery. Added Agents section pointing to dtu-profile-builder and dtu-browser-tester. Removed Key Concepts section that duplicated api-reference.md and profiles.md.

Agent-Driven Verification

Added agent instruction comments so verification commands run automatically instead of asking the user to do it manually. Agents now verify Incus installs directly.

Trimmed Awareness Context

Reduced dtu-awareness.md to remove content that was already covered by the skill and referenced docs. Less redundancy, fewer tokens consumed.

New Capability

Docker-in-Incus

Added base.config to the profile schema, enabling Incus container configuration flags like security.nesting at creation time. Docker can now run nested inside an Incus container.

base.config Schema

Profiles can now pass arbitrary Incus container configuration at creation time. This unlocks any workload that needs container nesting, device passthrough, or custom kernel parameters.

Reference Profile

docker-in-incus.yaml — a minimal profile that exercises Docker nested inside Incus with full networking verification. Host-to-Docker inbound, Docker-to-host outbound, Docker-to-Docker inter-container.

Guide and E2E Tests

docker-in-incus.md covers setup, platform-specific issues (WSL2, bare-metal Ubuntu, AppArmor), networking paths, and known non-working workarounds. E2E tests cover all networking paths. Test cleanup fixed to only destroy session containers.

Headline Feature

In-Place Updates

The new update command patches a running environment without destroying it. One command transforms the rebuild cycle into a fast refresh.

Before — Full Rebuild

Destroy environment

Re-provision from scratch

Reinstall all dependencies

Re-run readiness checks

Full teardown for every iteration

After — In-Place Update
  • Validate environment is running
  • Optionally refresh PyPI overrides
  • Run update commands in-place
  • Re-run readiness checks

Environment stays alive across iterations

How It Works

The Update Workflow

launch
update
test
update
test
# Launch once, update repeatedly $ amplifier-digital-twin update my-env --var branch=feature-x # Skip readiness checks for rapid iteration $ amplifier-digital-twin update my-env --skip-readiness

Profile Schema

New update section with cmds (shell commands) and refresh_pypi (bool to rebuild PyPI overrides from current source repos).

Engine Logic

Validates running env, optionally kills pypiserver, clears wheels, rebuilds overrides, runs update commands, then re-checks readiness.

3 E2E Tests

Verify: new code is picked up, environment stays running across updates, and the skip-readiness path works correctly.

Profile Examples

Real update profiles shipped

amplifier-user-sim

update: refresh_pypi: true cmds: - pip cache purge - pip install --upgrade amplifier-core

Rebuilds PyPI overrides from current source repos, clears pip cache, reinstalls from local packages.

amplifier-chat

update: cmds: - pkill -f amplifier-chat - pip install --upgrade amplifier-chat - amplifier-chat serve &

Kills the running server, reinstalls the package, and restarts — a clean server refresh without touching the container.

Reliability

Host-Side Access
Verification

check-readiness now verifies that access ports are reachable from the host — not just from inside the container. Confirms Incus proxy devices work end-to-end.

TCP + HTTP Checks

Connects via Python socket and urllib from the host process. Verifies both TCP reachability and HTTP response codes for each mapped port.

Configurable Retry

New PortMapping fields: verify (default true), verify_timeout (30s), verify_interval (2s). Retry loop catches slow-starting services.

Tested End-to-End

Unit tests with a real local HTTP server. E2E tests launch containers, verify access passes, stop the service, verify access correctly fails.

# New "access" key in check-readiness JSON output $ amplifier-digital-twin check-readiness my-env { "services": { ... }, "access": { "port_8080": { "status": "reachable", "method": "http_get" } } } # Skip when you don't need it $ amplifier-digital-twin check-readiness my-env --skip-access-check
Developer Experience

Profile Convention
and Gitea Integration

Profile Placement Convention

Standardized where DTU profiles live:

.amplifier/ digital-twin-universe/ profiles/ my-profile.yaml
  • Profile-builder agent updated to use convention
  • Default: don’t commit (workspace-specific, ephemeral)
  • Skill docs and README updated

Gitea as Bundle Dependency

amplifier-bundle-gitea added as an includes dependency in the DTU behavior. Automatically available when the DTU bundle is composed.

  • New self-validation profile tests the bundle against local Gitea repos
  • Test without pushing to origin
  • Profile-builder agent guides users toward Gitea for local testing
Architecture

Agents as the
Primary Interface

DTU work now routes through agents, not the root session. The heavy skill loads in agent sessions so tokens are consumed only when DTU work is actually happening.

Before
Root Session
DTU Skill (heavy)

Skill loaded in root session. Token cost paid even when DTU not in use.

After — Context Sink
Root Session
Agent
DTU Skill

Lightweight awareness doc in root. Agents load skill as their first step with context_depth=all, context_scope=full.

dtu-profile-builder

Loads skill first, then builds and validates profiles. Reports state changes and issues encountered back to root.

dtu-browser-tester

Loads skill first, then runs browser-based tests against running environments. Full context handoff on delegation.

Get Started

Try It Now

# Launch an environment $ amplifier-digital-twin launch my-profile.yaml # Make changes to your code, then update in-place $ amplifier-digital-twin update my-env # Verify ports are reachable from the host $ amplifier-digital-twin check-readiness my-env # Or ask an agent to build you a profile $ "Build me a DTU profile for testing amplifier-chat"

The DTU skill and agents are available in any Amplifier workspace
with the digital-twin-universe bundle composed.

More Amplifier Stories