Skip to content

Introducing Estelle, your agents’ self-improving software factory.

Your agents already write the code. Estelle is the factory they work in: talk to it from Slack, Linear or your phone, and it builds and tests every change in its own Silo, then follows your code into production and comes back with the fix when something breaks.

Keep payment identity across retriesRunning

Customers on a flaky connection get charged twice when checkout retries. Keep the payment identity the same across retries.

retryCheckout() mints a new key on every call, and the retry calls it again

Read shop/checkout.js

Find every caller of retryCheckout

Found it. retryCheckout() in shop/checkout.js:3 calls payments.newAttemptKey() on every attempt, so the retry sends the provider a brand-new key and it charges again.

Subagents

Check the refund path for the same bugRunning · 6m13s

Edited shop/checkout.js+1 −1

Ran npm test · 4 passed

The retry now reuses order.paymentKey, so a timed-out request charges once. A regression test sends the same order twice.

Continue this conversation in Claude Code
GitEditorDesktopTerminalFiles

No pull request in this session yet

DiffPrismTourCommits

1 changed file +1 −1UnifiedSplit

shop/checkout.js +1 −1
11 // One payment identity, even when the request is retried.
22 function retryCheckout(order, payments) {
3− const key = payments.newAttemptKey();
3+ const key = order.paymentKey;
44 return payments.charge(order.total, key);
55 }

Sample workspace. A fictional Storefront project: every session, number and chart here is sample data, and it does not connect to a production account.

Trusted by engineering teams at

The whole factory, in one place.

Follows your code into production

Estelle watches errors, logs and uptime, traces each issue to the change that caused it, and comes back with the fix.

Builds and tests in its own Silo

Every task gets a clean sandbox with your repository in it, where Estelle installs, runs the tests and checks its own work.

Joins the thread when you @Estelle

Ask from Slack, Linear or your phone. Estelle reads the thread, answers follow-ups and gets to work.

Knows how your whole system fits

Atlas maps every repository you connect, so each agent starts from how your code actually works.

Runs your recurring work on its own

Automations handle failed CI, dependency drift and new bug reports on a schedule, each in its own Silo.

One loop, from the first prompt to production.

Estelle follows your code all the way into production, and brings what it finds there back to the start of the loop.

~/src/activity.js

Reads your repository

Every file, symbol and caller is checked against your real code before the agent writes a line.

retry.test.jsfailing

Tests in its own Silo

Each agent runs your test suite in a sandbox and keeps going until the failing test passes.

POST /orderscharged twice

Fixes production errors

When an error starts firing in production, it traces the call, opens the fix as a pull request and watches the error clear.

Use any model.
The factory runs on all of them.

Bring a key from a provider you already pay for and that provider bills you directly, with no second charge from us. Point the CLI at your own endpoint and the weights never leave your machine. Every paid plan includes Estelle’s own inference, so you do not need a key to start.

  • Claude
  • GPT
  • Gemini
  • Grok
  • Kimi
  • DeepSeek
  • Qwen
  • Llama
  • GLM
  • Mistral
  • GPT-OSS
  • OpenRouter
  • Ollama
  • LM Studio

Anything else reaches Estelle through OpenRouter, an OpenAI-compatible endpoint, or weights you host yourself.

Built to be trusted with your code.

Your code stays yours, your keys stay yours, and every action Estelle takes on its own is written to a tamper-evident log.

Research

All research