Appearance
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.
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
manifoldCLI, authenticated withmanifold 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 --allThen invoke the serve-policy skill:
prompt
/serve-policyprompt
$serve-policyYour agent reads your model code and asks which benchmark to evaluate on. It writes a short Python script that serves your policy:
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.pytext
✓ 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 listYour next step is to evaluate your policy against a benchmark.