Loops of AI agents that build your app, and finish it.

An architect, a coder, a reviewer and a tester pass the work around a ring on your own machine. When the tasks run out, you get a finish report and a live preview.

Free with your own keys or free models · Windows, macOS, Linux

One prompt stops when the model stops.

Ask a single model for an app and you get one answer. In a loop, that answer is the first pass: the next bubble reads it, a failed check sends it to the fixer, and the ring turns again.

One prompt

PromptModel wrote 14 files
  • Reviewedno
  • Tests runno
  • Starts with one commandunknown

A loop example run log

  1. loop 1CoderWrote app/src/App.tsx (+142 −0)PASS
  2. loop 1Reviewer2 findingsFAILFixer
  3. loop 1FixerEdited app/src/App.tsx (+9 −4)PASS
  4. loop 2ReviewerNo findingsPASS
  5. loop 2Testernpm test exited 0PASS
How it works

From a sentence to a board that runs.

  1. 01

    Tell the Manager what you are making.

    The Manager is a chat that plans the board with you. In Plan mode it reads your folder, asks what it needs to, and writes cards into the Task Book once you agree.

  2. 02

    Press Build.

    Build proposes the loops: who sits in each ring, which folder each one may change, and where work goes when a check fails. Nothing is placed until you press the button.

  3. 03

    Press Play. The loops run at once.

    Each bubble is one agent turn, and its output is the next bubble’s input. A failed review routes to the fixer. Caps stop a loop that keeps failing instead of letting it spend all night.

  4. 04

    Get it back finished.

    When a run runs out of work on its own, the app writes a finish report from the run’s record and puts a live preview of your app beside it, so the first thing you open is the app itself.

A habit tracker. One page, React, saved in the browser.

I’ll draft the cards once one thing is settled.

When should a day’s habits reset?

At local midnight RecommendedWhen the app is first opened each daySomething else…

Proposed board

Appapp/
ArchitectDesignerCoderReviewerTester
on failFixer
Docsdocs/
ResearcherDocumenter
AppReviewer · loop 4
DocsDocumenter · loop 2

Task Book

0Draft
3Approved
2Implementing
1Review
6Done
CoderPASSReviewerFAILFixer

The app is finished. Its report and preview are ready.

Run ended on its own: no open cards, last test run passed.

Finish report
Live previewrunning

The parts that keep a loop honest.

Long runs work when every bubble has a clear job, a limited reach and somewhere to send its mistakes.

Several loops, one board

Each loop runs its own lane at its own pace. Loops trade work through the Task Book and the files on disk, never through each other’s context.

Four Manager modes

A mode is what the Manager is allowed to change. Only you switch it, and Build never touches a file.

A guard on every command

Commands are parsed before they run. Commits and deletions ask first; shells, remote access and paths outside the project are refused.

  • Anthropic
  • OpenAI
  • Google
  • OpenRouter
  • NVIDIA
  • Ollama
  • LM Studio

Seven providers, your keys

Pick a model per bubble, or a pool of up to eight that moves to the next when one is rate-limited or down. Free tiers and local models count.

Lessons it keeps

When a call is refused, the loop mines a lesson from it, and the next pass reads it. You can accept, edit or forget each one.

Finished means something you can check.

A run that completes on its own hands over three things. You read what happened instead of asking a model how it went.

ReportFinished

What was built

  • app/src/App.tsx+142
  • app/src/habits.ts+61
  • app/src/App.test.tsx+48
  • app/README.md+22

9 cards done

How to run it

npm install
npm run dev

What was tested

npm testexit 0

What is missing

Nothing on the list.

Visual review: passed

1280 × 800 and 390 × 844 · 0 blocking

runninglocalhost:5173
Today6-day streak
  • Read 20 pages
  • Walk 30 minutes
  • No phone after 22:00
+ Add a habit
Example handover from a small habit-tracker run.
  1. Visual review

    The reviewer opens the app in a real browser at desktop and phone widths. Blank pages, overflow, broken images and placeholder text fail it outright. If you have set a vision model, it also judges the screenshots against your DESIGN.md.

  2. Finish report

    Built from the run’s own record, with no model asked to grade itself: what was built, the command that runs it, the last test run and its exit code, and anything still missing.

  3. Live preview

    Your app’s dev server, one per board and held apart from the run. A new run does not stop it, so a Vite app keeps following the loop’s edits. Start, restart and stop it from the Report tab.

It runs where your code is.

Perfica is a desktop app. Your code goes only to the model you pick, and with a local model it never leaves the machine.

Runs on your computer
Every run and every Manager turn is held by a process on this machine. There is no Perfica server between you and your code.
Keys stay on this device
Stored encrypted (AES-256-GCM) on this machine and never kept in the page. The app holds no key of its own.
No account needed
Everything works without one. An account only adds sync, which is what Cloud is for.
Your project stays a folder
The board, the Task Book and the run history live in a folder inside your project that keeps itself out of git.
Secrets are off limits
Agents cannot read .env files, keys or certificates, and their commands run without variables named like KEY, SECRET or TOKEN.
Nothing fetched behind your back
The sandbox’s Docker image and the agents’ browser are downloaded only after you agree, with the size shown first.
Pricing

Free to run. Cloud when you want sync.

Free

$0

The whole app. Every loop, bubble, mode and tool.

  • Your own keys for Anthropic, OpenAI, Google, OpenRouter or NVIDIA
  • Free models, or local ones through Ollama and LM Studio
  • Command sandbox, web search, visual review, finish report and preview
  • No account
Download

Cloud

Coming soon

$36/ year

Everything in Free, across all your machines.

  • Loopspaces synced across your devices
  • An encrypted vault for your provider keys, handed only to the app on a signed-in device
  • Billed yearly

Founding price. The first 100 people to subscribe keep $36 a year for as long as they stay subscribed.

Cloud cannot be bought yet. Nothing in the app needs it.

Questions, answered plainly.

More in the docs.

What does Perfica cost?

The app is free. You pay your model provider for what your bubbles use, or nothing if you run free or local models. Cloud, when it opens, is US$36 a year.

Can I start without paying for a key?

Yes. OpenRouter’s free models and Google’s free tier only need a free key, and Ollama or LM Studio run models on your own machine with no key at all. Free tiers have tight rate limits, and the app spaces its calls to stay inside them.

Does my code leave my computer?

Only as part of the prompts your bubbles send to the model provider you chose, and as search queries when an agent searches the web. With a local model through Ollama or LM Studio, the prompts never leave the machine.

What does “finished” mean?

A run hands over when it runs out of work on its own. The report calls it finished when the README gives one command to start the app, the last test run passed, no bubble ended on FAIL or ERROR, and the preview did not crash. Anything short of that is listed under “What is missing”.

Can the agents run anything they like?

No. Each bubble holds only the tools its role grants, and writes only inside its loop’s folder. Commands pass a guard that allows, asks or refuses; commits, pushes and deletions ask you first unless you turn on Full Auto. With the sandbox on, the operating system enforces the folder as well.

Which models can I use?

Anthropic, OpenAI, Google, OpenRouter and NVIDIA with a key, and any model you run in Ollama or LM Studio. A bubble can use one model or a pool of up to eight that moves on when one is busy or out of quota.

Why does Windows warn me when I install it?

The builds are not code-signed yet, so Windows SmartScreen warns the first time. For the same reason the macOS app cannot update itself; download new versions from the releases page.

What is Cloud?

An optional yearly plan, US$36, for syncing your loopspaces across devices and keeping your keys in an encrypted vault. It is not on sale yet.

Give it a project. Get back an app that runs.

Windows · macOS · Linux