Building New Agents
Register inputs for a new agent and let Maniac bootstrap completions and build a model.
Most Maniac workflows start with an existing LLM call — you capture production traffic, then optimize. But what if you're building something new? You know the kinds of requests your agent will handle, but you don't have completions yet.
Maniac supports input-only registration. You register the inputs your agent needs to handle — without any outputs — and Maniac's infrastructure generates completions, bootstraps a training dataset, and builds an optimized model for you.
This is especially useful for high-throughput agents where you can enumerate or sample the input space upfront.
How It Works
Create a container with a base model and system prompt that describe the agent you want to build.
Register inputs — just the messages, no
outputfield needed.Maniac handles the rest — it generates completions, bootstraps a training dataset, and automatically optimizes a model for your task. No manual steps required.
Step 1 — Create a Container
Set the initial_model to the frontier model you want Maniac to bootstrap from, and the default_system_prompt to the instructions for your new agent.
from maniac import Maniac
maniac = Maniac()
container = maniac.containers.create(
label="ticket-router",
initial_model="openai/gpt-4o",
default_system_prompt=(
"You are a support ticket router. Given a customer message, "
"respond with exactly one label: billing, technical, account, or general."
),
)import Maniac from "maniac-js";
const maniac = new Maniac();
const container = await maniac.containers.create({
label: "ticket-router",
initial_model: "openai/gpt-4o",
default_system_prompt:
"You are a support ticket router. Given a customer message, " +
"respond with exactly one label: billing, technical, account, or general.",
});Step 2 — Register Inputs Only
Each item only needs an input — the output field is optional. When omitted, Maniac treats the entry as an input that needs a completion generated.
That's it — no output field, no completions to generate yourself.
Uploading Inputs at Scale
If you have a large corpus of representative inputs (e.g. historical support tickets, logged queries, synthetic samples), upload them in batches to avoid timeouts.
What Happens Next
Once your inputs are registered, add an Eval from the Evals tab inside your container to define how the agent's outputs should be judged (judge prompt or code eval). From there, Maniac takes over automatically — it generates completions from your base model, builds a training dataset, and optimizes a new model in the background. When a model is ready, it will appear in the Models tab inside your container, where you can deploy it so inference requests are routed through it.
Last updated