Agents in your app.
Work that keeps running.
leftspin is the mobile-specific agent platform. Your AI adapts with every run — lifting satisfaction and LTV, cutting churn, and turning usage into revenue. Keys stay protected, jobs survive app-closes; the infrastructure is our problem.
npm i @leftspin/sdk- ✓higher LTV
- ✓lower churn
- ✓sharper output
- ✓keys off the device
dusk, product shot, slow push
kept the push-in slow · 1080p
Sandbox trace. The worker was hard-killed mid-run; execution resumed from the journal and stopped at the approval gate. Nothing published twice.
The more they use it, the better your app gets
Your agent does not get better because you keep rewriting prompts. It gets better because usage produces evidence: which route finished, where the answer needed an edit, which tool did the job. The next run starts with that evidence, so each user gets a sharper result with less steering.
First pass, more often
Every route that finishes is evidence. The next run leans on the ones that worked and stops repeating the ones that came back for edits.
Less steering
Briefs get shorter as the app learns the shape of the work: the right defaults, the right tone, the right tool. Users stop explaining the same thing twice.
Cheaper where it can be
When a smaller model or a cheaper tool proves it can finish the job, more work goes there. Quality improves without making every run more expensive.
“warmer, but not orange — keep the crop”
The agent is the easy part. The stack around it isn't.
Auth, keys, queues, retries, per-user state, tools, approvals, quotas, logs. Each one is another service to wire and another failure mode to page someone about. leftspin takes the tedious half so your team can ship the product.
You own every moving part.
One runtime owns the seam.
Less surface area
Every queue, retry path, key and approval stops being a separate service to own.
Fewer failure modes
One runtime means one place to see a run, retry it, stop it and explain what happened.
A better agent experience
Sessions stay live, work resumes after a deploy, and the app can show progress instead of a spinner.
Five shapes of work. One runtime.
Wiring auth, files, model access, streams and a job runner separately is what makes agents feel bolted on. Run all of it on the same substrate: same keys, same journal, same metering, same user.
Minutes-long work that survives a closed app, a dropped connection, a deploy.
render.mp4 · demoPlus scheduled and recurring runs, background triggers, background sync and voice, image and video modalities. The surface is uniform: same SDK, same journal, same result envelope.
await leftspin.run({ shape: "durable_job", input })same call · any shapeFrom a plant identifier to an agent that cancels your subscriptions.
The same substrate shows up in very different products. What they share is work that has to remember someone, outlive a screen, or prove what it did.

dusk, product shot, slow push — keep the mist
The things you ask before the first run.
Short answers to the parts that usually need a call. If yours isn't here, get started.
