OpenPilot is an open-source AI agent harness for your laptop. Bring your own LLM API key, optionally plug in TinyFish for live web search, and let an agent read, edit, and run tools against a real project folder — with no vendor lock-in.
It is a chat-first desktop app (Electron) that runs locally. You choose the model provider, the workspace, and the tools. Keys stay on your machine.
- Bring your own model — Any OpenAI-compatible endpoint works (OpenAI, local servers, custom gateways, and more). You own the key; nothing is locked to a single vendor.
- Local AI harness — The agent runs on your machine against a folder you pick, so it can work with real files on disk.
- TinyFish search — Optional web search and page fetch so the agent can look up current docs, versions, and facts outside the workspace.
- Open source — Inspect the code, fork it, and contribute. MIT licensed.
| Area | What you get |
|---|---|
| Models | Add multiple OpenAI-compatible models (name, base URL, API key). Switch models per chat. |
| Workspace | Point OpenPilot at a project folder; the agent can read and edit files there. |
| TinyFish | Optional live web search + URL fetch (TinyFish Search / Fetch APIs). Search/Fetch do not use TinyFish credits. |
| Skills | Reusable playbooks the agent can load (/ in the composer). User and project skills supported. |
| MCP | Connect Model Context Protocol servers and enable their tools per chat. |
| Memory | Persistent memory settings so the agent can retain useful context across work. |
| Tool UI | Streaming replies, thinking blocks, file edits, shell/execute output, and approve/deny for sensitive actions. |
| Usage | Session and lifetime token usage by model. |
| Onboarding | Guided setup: connect a model → pick a workspace → optionally enable TinyFish. |
| Updates | Installed builds check GitHub Releases for updates. |
Prebuilt installers are published on GitHub Releases:
| Platform | Artifact |
|---|---|
| macOS (Apple Silicon) | OpenPilot-arm64.dmg |
| macOS (Intel) | OpenPilot-x64.dmg |
| Windows (installer) | OpenPilot-Setup.exe |
| Windows (portable) | OpenPilot-Portable.exe |
Installed apps can update automatically from GitHub Releases. Running from source with npm start does not auto-update.
Requirements: Node.js 20+
git clone https://github.com/ibmshaikh/OpenPilot.git
cd OpenPilot
npm install
npm startOn first launch, follow onboarding:
- Connect a model — OpenAI-compatible base URL + API key (or skip and add later in Settings).
- Choose a workspace — The folder the agent should work in.
- Optional: TinyFish — Get a key at agent.tinyfish.ai/api-keys for web search.
If native modules fail after dependency changes:
npm run rebuild# macOS (.dmg + .zip) and Windows (.exe installer + portable)
npm run dist
# Platform-specific
npm run dist:mac
npm run dist:winOutput goes to dist/. Artifact names omit the version (e.g. OpenPilot-arm64.dmg, OpenPilot-Setup.exe); the version appears in Settings → About.
Notes:
- macOS builds are unsigned by default (
identity: null). - Building Windows from macOS requires Wine (
brew install --cask wine-stable). Prefer CI or a Windows machine for Windows artifacts.
src/
main/ # Electron main process (agent, DB, MCP, TinyFish, updater)
preload/ # Secure bridge between main and renderer
renderer/ # Chat UI, settings, onboarding, tool cards
assets/ # App icons
scripts/ # Build / packaging helpers
User data (macOS example):
- App data:
~/Library/Application Support/OpenPilot/(onecode.sqlite,secrets.key,mcp.json) - Skills / memory:
~/.onecode/
Contributions are welcome — bug fixes, features, docs, and UX polish.
- Fork the repo and create a branch from
main:git checkout -b feat/your-change
- Install and run locally (
npm install→npm start). - Make focused changes; keep PRs small and reviewable.
- Open a pull request against
mainwith a short summary of why the change helps. - For bugs, open a GitHub Issue with steps to reproduce when you can.
- Match existing style in
src/(no drive-by refactors in unrelated files). - Prefer clear, user-facing behavior over clever abstractions.
- Do not commit secrets, API keys, or local user data.
- After pulling dependency changes, run
npm run rebuildifbetter-sqlite3needs a native rebuild.
Include:
- OS and OpenPilot version (Settings → About)
- Whether you used a release build or
npm start - Steps to reproduce and any relevant logs / screenshots
Installed apps update from published GitHub Releases.
- Bump
versioninpackage.json(e.g.1.0.3→1.0.4). - Commit and push to
main. - Tag and push:
git tag v1.0.4 git push origin v1.0.4
- GitHub Actions builds macOS + Windows and publishes release assets.
- Users on installed builds are prompted when an update is ready.
Local publish (needs GH_TOKEN with repo scope):
npm run release:mac
# or
npm run release:winAuto-update uses the zip (macOS) and NSIS (Windows) artifacts. Releases must be published (not draft) for clients to see them. macOS auto-update is more reliable with Apple code signing + notarization.
MIT — see package.json. Use it, fork it, and ship improvements back if you can.
- Releases: https://github.com/ibmshaikh/OpenPilot/releases
- Issues: https://github.com/ibmshaikh/OpenPilot/issues
- TinyFish API keys: https://agent.tinyfish.ai/api-keys
- TinyFish docs: https://docs.tinyfish.ai