Build AI agents as simple as writing a function.
Memory, database, LLM, compute, observability, and context engineering — all built in. No infrastructure to learn.
USE FROM YOUR APP
import { OnCell } from "@oncell/sdk";
const oncell = new OnCell({ apiKey: "oncell_sk_..." });
// one-shot — wait for the final reply
const reply = await oncell.run("support", "chat", { message });
// real-time — stream each step as it happens
for await (const event of oncell.stream("support", "chat", { message })) {
console.log(event.type, event.data);
}BUILT INTO EVERY AGENT
agent.llm()
Call any model. Built-in, metered. Zero API keys.
agent.memory
Durable KV state. Survives crashes. Per-user with .forUser(id).
agent.files
Persistent filesystem with built-in search. RAG included.
agent.db
SQL database. No connection strings, no ORM.
agent.shell()
Shell commands in a gVisor-isolated sandbox.
agent.askHuman()
Pause for human approval. Resumes when resolved.
+ agent.sleep() · agent.schedule() · agent.onWebhook() · agent.onEmail() · agent.chat() · oncell trace · see all →
AGENTS THAT NEVER LOSE WORK
Every await is a checkpoint. Crashes recover. Deploys are safe. No workflow engine.
agent.task("refund", async ({ orderId, amount }) => {
const order = await agent.db.query(`SELECT * FROM orders WHERE id = ${orderId}`);
// Agent parks here — can wait days for approval
const ok = await agent.askHuman({ question: `Refund $${amount}?`, channel: "slack" });
if (ok) await agent.llm("Process the refund");
// Sleep 30 days, then follow up
await agent.sleep({ days: 30 });
await agent.llm("Check if customer is satisfied");
});WHAT PEOPLE BUILD
Customer support
Per-user memory, RAG over docs, approval gates, scheduled follow-ups.
Coding agent
Reads code, writes files, runs tests, iterates until it works.
Data pipeline
Processes rows durably — crashes at 347, resumes at 348.
Ops monitor
Receives alerts by email, triages with LLM, escalates to Slack.