Skip to content

Self-hosted policy Recommended ​

Serve your policy from a machine you control: your workstation, a cloud server, or a serverless deployment. Manifold runs the benchmark on its own machines and sends each observation to your policy. Your code and weights stay where they are.

Your policycode and weightsBenchmarkgpu accelerated simulationManifold cloudmanaged cloud computeYour machineworkstation, cloud server, or serverless

Another way to serve

If you want Manifold to run your policy for you, see Manifold cloud.

Requirements ​

  • A machine that can load and run your policy
  • Your policy code and weights on that machine
  • The manifold CLI, authenticated with manifold auth login

Serve your policy ​

Using agents

While this process can be done manually, we highly recommend letting your agent of choice handle it, with the help of our skills, which teach Codex, Claude Code, Cursor, and 70+ other AI agents to work with Manifold.

Go to the repository that holds your model code, and install the Manifold agent skills.

bash
cd my-project
npx skills add bifrostai/manifold-skills --all

Then invoke the serve-policy skill:

prompt
/serve-policy
prompt
$serve-policy

Your agent reads your model code and asks which benchmark to evaluate on. It writes a short Python script that serves your policy:

serve.py
1Policy signature
2predict
3manifold.serve

Then it starts the script with manifold policy serve:

bash
manifold policy serve my-policy:0.0.1 -- uv run serve.py
text
✓ Registered my-policy:0.0.1
● Starting my-policy:0.0.1
  │ Loading checkpoint...
✓ Policy loaded in 1m 3s. Listening on 127.0.0.1:43127
✓ Registered this machine as runner my-workstation
✓ Ready. Serving my-policy:0.0.1
╭───────────────────────────────────────────────────────────────╮
│ To submit a run, in another shell:                            │
│   manifold run submit my-policy:0.0.1 <benchmark> --name NAME │
╰───────────────────────────────────────────────────────────────╯
Waiting for work... (press Ctrl-C to stop)

Leave this command running. It starts your script once. While your model loads, the lines from your script appear under Starting. The command prints Ready after your script accepts connections. Every run that you submit for my-policy:0.0.1 goes to this script, so your model loads only once. Runs that teammates submit do not reach it.

During a run, the output of your script goes to the run's log in the Manifold app, and this terminal stays quiet. Between runs, the terminal shows that output again. Press Ctrl-C to stop serving.

To check the setup, your agent runs the debug version of your benchmark. A debug benchmark sends the same data as the full benchmark, with fewer tasks or episodes, so you get a first score quickly.

Versions ​

The text after : is the version, for example 0.0.1 in my-policy:0.0.1. A version cannot contain :. Manifold groups runs by version, so use a new version whenever you change your code or weights.

On completion ​

Once the command starts serving, your policy shows up when you run:

bash
manifold policy list

Your next step is to evaluate your policy against a benchmark.