-
-
Describe what you want done, pick a local model, and Private Pilot turns it into a reusable automation.
-
One sentence becomes an automation you can read — the exact sites it will touch, and a Try it once button before anything is saved.
-
Saved workflows running on schedules, each step showing its real result, alongside every automation built so far.
-
Every run leaves a receipt — the answer, the source it came from, jobs that paused without sending, and where each one ran.
-
The AI runs on your machine — ten installed models to pick from. A Featherless API key below the local models unlocks the cloud models.
Inspiration
The tasks we most wanted to automate were the ones we least wanted to send anywhere — an inbox, a folder of invoices, a contract. Existing tools make you choose between a node graph on a server you maintain and a cloud you cannot inspect. We wanted plain English in, something readable out, and all of it running on our own machine.
What it does
Private Pilot turns a sentence into a readable automation you can test, save, edit through chat, schedule, and chain into sequences. Nothing is saved until it has run once and proved it works.
- The web — live prices, weather, news, air quality and service status. Each automation records the exact sites it may reach, and every request is checked against that list in code before it leaves the computer.
- Your documents — point it at a folder and ask questions. Answers come back with the passage they were taken from. Scans and image-only PDFs are OCR'd first, and the whole index is built and stored locally.
- Your Gmail — search and summarize your mail. It never sends and never marks a message as read. The only thing it can write is a draft, left in your Drafts folder for you to send yourself.
Local by default, cloud by choice. A stock price and a folder of contracts do not deserve the same treatment. Everything runs on your machine with Ollama unless you paste a Featherless key and pick a cloud model — the right call for fast, non-sensitive work like weather or a news roundup. Every run records where it executed, so you can check rather than take our word for it.
How we built it
React, TypeScript, Vite, Tauri and Rust, with Ollama running Qwen and Gemma locally.
A request becomes a strict JSON record before anything runs, and that record — not the model — decides what is allowed. The real files on the machine are compiled into the grammar the model writes with, so it cannot name a file that does not exist. Hostnames are checked before any fetch. Every number in an answer must appear in the page that was actually fetched, or the run stops. File changes happen on a copy, with a diff you approve. The Gmail app password is sealed with Windows DPAPI, and a draft can only be addressed to someone that run actually read from.
Challenges we ran into
Small models returned incomplete records and were slow on easy requests. We added strict schemas, validation retries, and template fast paths that skip the model entirely.
Websites blocked us. A run now retries the page in a real browser, then falls back to a hand-picked source carrying the same fact, and only then reports every host it tried.
Asked to total three invoices, a model produced a number that was simply wrong. So we moved arithmetic out of the model: it finds the figures, and ordinary code adds them up.
What we learned
Local models work best as one part of a structured system. The AI understands the request, while schemas and regular code handle permissions, calculations and verification.
And privacy is a judgment made per task, not a single switch. The safeguards that mattered most were the narrow ones — a list of allowed hosts, a draft that cannot be sent, a copy of a folder instead of the folder itself.
Built With
- exceljs
- featherless-ai
- gemma
- llm
- local-ai
- natural-language-processing
- node.js
- ollama
- pdf.js
- qwen
- react
- rust
- tauri
- typescript
- vite
- web
- webview2
- windows
- workflow-automation
- zod
Log in or sign up for Devpost to join the conversation.