Skip to main content

Workspace Isolation

Each rollout runs in its own workspace, with an isolated Docker network with its own containers. This is the unit of multi-tenancy:
  • Parallel execution of multiple rollouts without interference
  • Clean state between rollouts
  • Per-rollout environment variables and configuration
When a rollout finishes, the workspace is torn down. When the next rollout starts, a fresh workspace is provisioned from scratch.

Tool Server Protocol

Tool servers expose a standard HTTP API. Any service that implements this protocol can be used as a tool in the Simulation Lab.

Multi-Tool Composition

A workspace can include multiple tool servers. The agent sees a unified tool list. Tools are automatically namespaced by their server name (e.g., email-env__send_email, chronos-server__create_event). Routing is handled transparently; the agent calls tools by name and the Simulation Lab forwards each call to the correct server.

Tool Definition Format

Each tool server is defined as a YAML file that maps directly to Docker Compose services. Here is the email tool as an example:
name: email
display_name: Email
description: Email sending and inbox management via SMTP server.
category: communication

exposed_ports:
  - port: 8025
    description: Email web UI

services:
  smtp-server:
    image: <smtp-image>
    ports: ["8025", "1025"]
    healthcheck:
      interval: 10s
      retries: 6

  email-env:
    image: <tool-server-image>
    environment:
      SMTP_BASE_URL: http://smtp-server:8025
    depends_on:
      smtp-server:
        condition: service_healthy
The YAML specifies everything Docker needs: images, ports, health checks, environment variables, and dependency ordering. The CLI reads these definitions and composes them into a working docker-compose.yml.

Built-in Tools

Below is a selection of out-of-the-box tools that come with Simulation Lab. We are continually adding more domain-specific tools as part of our roadmap.
NameCategoryDescription
playwrightBrowserBrowser automation via Playwright MCP
codingDevelopmentSandboxed shell and filesystem (OpenHands)
frappe-hrmsEnterpriseFull HR management system (Frappe HRMS)
emailCommunicationEmail sending/inbox via MailHog SMTP
calendarProductivityCalDAV calendar (Baikal + Chronos MCP)
rocketchatCommunicationOpen source Slack-equivalent Team chat
sec-edgarFinanceSEC EDGAR filings search
twelve-dataFinanceMarket data
google-workspaceProductivityDrive, Docs, Sheets

Domain Templates

Templates are named tool combinations for common domains:
TemplateIncluded Tools
human-resourcesfrappe-hrms, rocketchat, email, calendar
customer-servicefrappe-helpdesk, rocketchat, email, calendar
codingOpenHands
financesec-edgar, twelve-data, google-workspace
Templates are a starting point; users can then build custom combinations by selecting individual tools.

Environment Composition

The composition engine takes your selected tools and produces a complete Docker Compose stack:
  1. Collects services from each tool’s YAML definition
  2. Adds networking — all services join a shared bridge network
  3. Maps ports — only agent-facing and web UI ports get host bindings; internal services (databases, MCP servers) stay network-only
  4. Detects port conflicts and auto-resolves them
  5. Generates a .env file with placeholders for any required API keys
  6. Produces a README.md with endpoints and quickstart commands

Custom Tools — Bring Your Own MCP

This feature is launching soon.
Simulation Lab enables users to bring their own tools via MCP.

The Core Idea

Simulation Lab’s tool server protocol wraps MCP servers. To add your own tools, you point Simulation Lab at your MCP server, and then it becomes available to agents in the workspace, and can be used for task generation and verification.

Two Paths for Integration

For task generation: Provide your MCP tool definitions as JSON. The hosted task generation API consumes them and produces task bundles (instructions, seed data, and verifiers) tailored to your tools.
# Generate tasks for your custom tools
collinear-sim-lab tasks-gen run --tools ./tools.json --out ./bundles/hr-custom
For runtime: Point Simulation Lab at your MCP server URL. It becomes available to agents in the workspace alongside built-in tools. Agents discover it via the unified tool list and call it like any other tool.