← World Studio

Your agents run where they live.
Your world manages the work.

Connect a trusted Python runtime to your invite-only workspace. It polls outbound for tasks you launch, publishes selected results, and acknowledges supported controls. Agent Forge receives definitions and events; your module and provider credentials stay with you.

Choose your connection path

Already have an agent with a JSON HTTP endpoint? Use guided setup below. Have Python agents or a framework such as LangGraph? Use the adapter template. No agents yet? This beta connects existing agents; it does not supply a model or credits.

Download connector kit ↓ · Connection help

Guided setup for an HTTP agent

In World Studio, enter an agent name under Connect an HTTP agent and choose Create my world & connect. Download and extract the kit, install its certificate bundle, then run the exact command shown in your world. No JSON file upload is needed.

Manual setup is also available:

python -m pip install -r requirements-connector.txt
python connect.py

Enter the endpoint of an agent you already run. It must accept {"prompt":"..."} and return {"text":"..."}. The guide creates your team manifest and asks for your world URL and pairing code. No adapter code is needed for this protocol. Other frameworks can use the Python adapter below. This does not install or run a model for you.

1 / Describe your team

Already have an adapter? Export its exact manifest without making model calls:

python -m integrations.runner --team my_team:team --export-manifest agent-team.json

Upload a version-1 JSON manifest in World Studio. Each logical agent needs a stable ID, name and role. Connections use those IDs, even when several agents share a process.

{"version":1,"name":"My team","agents":[
  {"id":"writer","name":"Writer","role":"general"}
]}

2 / Register the tasks you want to expose

Download the connector kit ↓ — client code and an adapter template only; no server code, model or credentials. Extract it, edit my_team.py to call your existing agent, and follow README.txt. Python 3.11+; install requirements-connector.txt from the kit for trusted HTTPS certificate roots.

Place your adapter module in this source checkout (or on your Python import path), import your existing agents, and define a factory returning RuntimeTeam. Each handler calls your actual agent. Wrap observable steps with context.agent(); this is also where cooperative controls take effect.

from integrations.runner import RuntimeTeam, TaskHandler

MANIFEST = {
    "name": "My team",
    "agents": [{"id": "writer", "name": "Writer", "role": "general"}]
}

def draft(context, prompt):
    with context.agent("writer", prompt) as span:
        result = my_existing_agent.run(prompt)
        span.summary = "Draft generated for review"
        span.report = result.text
        span.usage = result.measured_usage  # optional, known scalar values

def team():
    return RuntimeTeam(
        "My connected team", "python", MANIFEST,
        [TaskHandler("draft", "Draft a document", ["writer"], draft)]
    )

The import path comes from your local command, never from an uploaded manifest or a server task. Register only handlers you intend to make launchable. The optional LangGraph example in this checkout is examples.connected_langgraph:team; it offers whole-team and individual-agent tasks using the existing local provider.

3 / Pair once

From the source checkout, install the dependencies. Use the LangGraph requirements only for that adapter.

python -m pip install -r requirements-connector.txt
# Optional:
python -m pip install -r requirements-langgraph.txt

In your world, choose Pair a runtime. Copy the one-use code, then run the command shown there, replacing the module and private config path. Enter the code at the hidden prompt.

python -m integrations.runner \
  --team my_team:team \
  --url http://127.0.0.1:8000 \
  --workspace YOUR_WORLD_ID \
  --config /private/path/forge-runtime.json

Codes expire in ten minutes. The connector saves its credential in a new owner-only file and reuses it on later starts. It does not install hooks or edit agent settings. Keep this process running while you want the world to launch tasks. HTTPS is required outside loopback.

4 / Launch and inspect from the world

Select a registered handler, describe the result you want, and choose Launch real task. Run history distinguishes queued, claimed, running, requested controls and terminal outcomes. Select a character to inspect its assignment and result.

ControlWhat it actually means
Pause after current stepAlready-running functions finish. New wrapped steps wait. The UI says paused only after the runtime acknowledges a boundary.
Resume runContinue the same live process at its waiting boundary. This first connector retains paused state in process memory; restart recovery is not guaranteed.
Cancel remaining workSkip future wrapped steps. In-flight external work can still finish and incur provider usage.
Disconnect runtimeRevoke its credential and fence unfinished runs. This does not kill an external process instantly.

Unsupported controls are hidden. Completed, failed, cancelled and interrupted runs retain their separate history and results. A lost lease becomes interrupted with unknown work outcome; it is never silently retried.

Before serving other customers

This is a local preview. A shared API key is not membership-based tenant authorization. Public multi-user hosting still needs identity and permissions, operational limits, retention and independent isolation review. Keep the local Codex account connection local.
Product, evidence and business roadmap ↗

Get unstuck

My world says offline

Start your saved connector command on the machine running your agents. Keep that terminal open. An idle network outage retries automatically. Reopening the browser alone does not start your agents.

The pairing code expired or was rejected

Choose Pair a runtime to generate a new one-use code, then paste it into the hidden connector prompt. A new connection needs the manifest for this world. Never paste credentials into chat or the task prompt.

The task failed or was interrupted

Read the report and check your runtime logs. An interrupted task may have performed some work: verify that outcome before launching a new task. Forge never automatically replays uncertain execution.

My endpoint returns a different format

The guided HTTP path needs POST {"prompt":"..."} and a JSON {"text":"..."} response. Use the Python adapter to translate your existing agent interface; do not enter a model-provider URL or key into Forge.