Capabilities

One POST starts an agent. The rest is yours.

Health Loops is built to sit inside your product, not beside it. Trigger a loop over HTTP, write it in TypeScript with the SDK, scaffold it from the CLI, and choose the model that answers each agent.

One HTTP trigger.

POST a JSON body with a scoped bearer token and get a run id back before the work finishes.

A typed SDK.

Workflow, chat agent, voice agent, tools, models and triggers are TypeScript imports, not a visual builder you have to leave.

A CLI for the loop.

Scaffold, route, validate, verify and deploy from the terminal, with a hosted planner that turns a sentence into commands.

You pick the model.

Choose a hosted provider model or an open-weight Workers AI model per agent, and set the reasoning depth per call.
How it works

The mechanism, in order.

  1. Write the loop. Import workflow or chatAgent from @loops/sdk, define the steps, tools and model, and export it.
  2. Scaffold or generate. Use the health CLI to init a project, or health code to turn a prompt into a plan of commands you run yourself.
  3. Deploy a version. A deploy writes a new version. New runs use it; in-flight runs finish on the version they started with.
  4. Call it from your product. Trigger it over HTTP, embed it with one script tag, install the Shopify app, or let a person run it in the dashboard.
  5. Watch the run. The run id is the join key between your logs and the run timeline, steps and event log.
agent.tsTypeScript
import { chatAgent, model } from "@loops/sdk";
import { bookAppointment } from "./tools";

export const frontDesk = chatAgent({
  id: "front-desk",
  execute: async ({ submit, messages, env }) =>
    submit({
      messages,
      instructions: `You are the front desk for ${env.BRAND_NAME}.`,
      tools: [bookAppointment],
      model: model("openai/gpt-4o-mini"),
    }),
});
The specifics

What you get, and where it stops.

HTTP surface. POST /loop/:organizationId/:loopId starts a run; POST /loop/:organizationId/:loopId/:runId sends an event to an in-flight run. The bearer token is scoped to all loops or one loop, with run access, and the response returns a runId.
SDK. The TypeScript SDK exports workflow, chatAgent, voiceAgent, defineTool, Type, model and trigger. The same file can start another loop as a tool, so an agent can hand work to a workflow mid-conversation.
CLI. health init, health code, health route, health tools, health build, health verify and health deploy. health code --hosted sends a redacted prompt to the Healthcode planner and returns a tool plan of health commands; it is a planner, not a code runner.
Embed and Shopify. One script tag with a data-agent id puts an agent on any site. The Shopify app and theme block put it in a store, with the store binding available to loops.
Model choice. model() takes a model id, a provider/model id or a Workers AI id. The builder chooses per agent, and thinking can be low, medium or high per call. The price page shows the model cost of a conversation.
Where it stops. The SDK is TypeScript. There is no MCP server or MCP tool consumption today, no bring-your-own provider key, and no self-hosted runtime.
FAQ

Questions

Is there a REST API?

Yes. One authenticated POST starts a loop run or sends an event to a run in flight. The rest of the product uses a typed RPC surface that the web app and scan app share.

Do you have an MCP server?

Not yet. The public extensibility route is the HTTP trigger API, the TypeScript SDK, the CLI and typed custom tools.

Which models can we use?

Hosted provider models and open-weight Workers AI models, chosen per agent. The builder sets the model id and the reasoning depth; provider keys are managed by the platform.

Can we bring our own model key?

No. You choose the model and the platform runs it, so there is no provider key for you to hold or rotate.

Can we embed an agent on a non-Ollie site?

Yes. One script tag from loops.ollie.health/embed.js with the agent id. The Shopify app and theme block do the same inside a store.

Ollie’s agents give wellness guidance. They don’t diagnose or prescribe, and they hand off to a human expert when it matters.