Apps Beta

Write the app.
We run the rest.

Data, actions, background jobs and Next.js pages in one folder. We store the records, run the code and serve the pages, on the same balance as your models.

One folder, live as you savedevelopment
support-desk/5 files
  • api/models/ticket/schema.ib.tsmodel
  • api/models/ticket/actions/triage.tsaction
  • settings.ib.tsschedule
  • web/app/page.tsxpage
  • git pushdeploy
ticket · 1,204 records · searchable
Charged twice for Octoberbilling
Export button does nothing on Safaribug
Can I add a second admin?question
+ field priority: enum · applied, no migration file
01 · What people build

Same folder. Four kinds of job.

A Shopify app, a tool for your team, a sync between two services or a public site: it’s the same models, actions and pages underneath.

01 / 04 · Shopify apps

Shopify apps, without the plumbing.

Pick Shopify app and the folder starts with the install wired up: the shop model, its scopes and an admin page. Synced products and theme blocks are files you add.

  • Install, scopes and uninstall run as actions on the shop model.
  • Products sync into a model you can query like any other.
  • Theme blocks ship as a theme app extension; admin pages use Polaris.
Building for Shopify
01InstallshopifyShop/install · 4 scopes
02SyncshopifyProduct · 148 records
03Theme blockproduct-qa.liquid · live
theme app extension · product pageib-store.myshopify.com
Questions about this product
Does the canvas tote fit a 15-inch laptop?Yes. The inside pocket is 16 inches wide and padded on both sides.
products/updateretried once · deliveredanswer/createclaude-haiku-4.5 · $0.0007
02 · AI built in

Call a model like any other function.

Model calls go through the Gateway, so your team’s allowed models, budgets and Logs apply. No provider key to paste, and every run shows what its model calls cost.

Models in actions
api/models/ticket/actions/triage.tsActionRun
import { save, type ActionRun } from "@inferencebureau/apps-sdk";

export const run: ActionRun = async ({ record, ai }) => {
  const { text } = await ai.generateText({
    model: "anthropic/claude-haiku-4.5",
    prompt: `One label for this ticket: ${record.subject}`,
  });
  record.label = text.trim();
  await save(record);
};
03 · Ship it

Push to deploy. Undo anything.

Development and production are separate, each with its own records, secrets and address. Connect a repository and pushes to the production branch deploy.

developmentsample data · 6 tickets
Pull request #42 · Add priority to triagepreview environment · support-desk--pr-42.inferencebureau.app
Deploy plan · support-desk1 field added · 0 removed
productionmain
Add priority to ticket triage8c1302f · 41 filesbuilding
Nightly digest skips weekendsa77e0d1 · yesterdaylive
Ticket page shows customer history19bb4ce · Oct 30ready
First deploy02f9a3e · Oct 28ready
Roll back any deploy. Every change to the records is kept, so they can be restored too.
04 · Skipped

Crossed off, and what happens instead.

  • Register Shopify webhooksListed in settings.ib.ts, subscribed for you
  • Keep a tunnel open for local webhooksib-apps dev opens one and keeps it up
  • Paste a model provider keyModel calls bill to your balance
  • Create a storage bucketA file field on any model
  • Run a job queueJobs, retries and schedules built in
  • Build an admin for your dataRecords, search and CSV in the console
  • Write a deploy pipelinePush to the production branch
  • Set up sign-inComes with the Members starter
  • Wire up preview URLsA preview environment per pull request
  • Copy secrets between environmentsPer-environment variables, or 1Password
05 · Yours to keep

Nothing here is a black box.

The assistant writes ordinary TypeScript you can read, run and take with you.

gitIt’s a folderConnect a repository and the app is files in it. Review changes in pull requests like any other code.
ib-apps devRun it locallyA local dev server with a tunnel, so webhooks reach your laptop while you work.
CSVTake the dataExport any model’s records as CSV, or read them through the app’s typed API.
MCPHand it to an agentEach app has an MCP server, so Claude Code or Cursor can build and run it with you.
06 · Plans

Free to start. Pay when it’s real.

One plan for the team, with allowances pooled across apps. Development is never counted. Model calls and the assistant bill as ordinary gateway requests.

FreeOne app in production, for trying things out$0
ProUnlimited apps, 14-day logs, 5 custom domains$35/ month
Scale10× the allowances, 30-day logs and history$299/ month

Describe it, or write it.

Start from a prompt on the homepage, or run ib-apps dev in a folder and keep going in your own editor.