Build it with us.
Code is one way in. Testing on your machine, translating, writing skills for the sites you use and reporting bugs help just as much.
Ways to help
Write code
Pick an issue marked good first issue, or a Planned feature from the list.
Test it
Install it on your machine and browser, and tell us what broke. Windows testers are wanted most.
Translate
The app ships in English, Portuguese (Brazil) and Traditional Chinese. Add or improve a language.
Write skills
A skill is a Markdown playbook for a site or task. If you use a site every day, you know its route best.
Report a problem
The issue form asks for what a fixer needs. In the extension: Settings › Help › Report a problem.
Run it locally
Node.js 24 and pnpm 10. About five minutes.
Get the code
Terminalgit clone https://github.com/AviOfLagos/ava-copilot.git && cd ava-copilotInstall
Terminalcorepack enable && pnpm installBuild and watch
Terminalpnpm devLoad it
Open your browser’s extensions page, switch on Developer mode, click Load unpacked and choose the dist folder.
Check your change
Terminalpnpm type-check && pnpm test
How it is built
Extension
WXT, Manifest V3, React and TypeScript. The background owns all state; the panel only reads and sends commands.
Data
IndexedDB through Dexie, in the browser. No server of ours.
Models
The Vercel AI SDK, so every provider is one adapter.
Voice
Moonshine, Whisper, Vosk, KittenTTS and Kokoro in workers in an offscreen document.
Ava Brain
A Node service on the Mac (companion/), with agent sessions on Vercel eve and Docker sandboxes.
Website
This site: Astro, in site/. Static pages, no third-party scripts.
Rules every change follows
The gate stays
Anything that sends, posts, submits, deletes, publishes, buys or changes permissions goes through the review gate. No exceptions, no settings to skip it.
Outside text is data
Pages, messages, transcripts and tool output never become instructions. Wrap them as untrusted content before a model sees them.
No analytics, no new hosts
Nothing calls anyone but the model the user chose. A new permission or host is called out in the pull request.
New features in new folders
Plug in through the registries (register.ts) and keep edits to upstream Nanobrowser files small, so merges stay possible.
Every string in every language
A new message key goes into every locale in public/_locales.
Tests with the change
Unit tests next to the code, and an end-to-end test for anything the user sees. Lint only the files you changed.
From a report to a fix
Someone reports a problem through the issue form (in the extension: Settings › Help › Report a problem).
Pick it up: comment “I’ll take this” so nobody doubles up. Reporters are welcome to fix their own issue.
Fork, branch, fix. One change per pull request, against feat/restyle, with “Fixes #123” in the description.
CI checks types, tests, locales and both builds on every pull request. A maintainer reviews within a few days.
Tools that make it quick
Use whatever you like. These work well with this codebase; the repository’s AGENTS.md tells coding agents the rules.
Claude Code
A coding agent in your terminal. Give it the issue link; it reads AGENTS.md and the docs first.
Cursor or VS Code
An editor with an AI assistant. Open the repo and point it at the issue and the files it names.
Codex CLI
OpenAI’s terminal agent, if that is the one you use.
GitHub CLI
`gh issue list --label "good first issue"` to find one, `gh pr create` to send your fix.
github.dev
Press . on any GitHub page to edit in the browser: enough for copy, docs and translations.
Suggestions, not endorsements. Whatever you use, run pnpm type-check and pnpm test before you push.
Found a security problem?
Please don’t open a public issue. Report it privately through a GitHub security advisory, and we will answer within three days.
Ava Copilot is Apache-2.0, a fork of Nanobrowser. By contributing you agree your work is shared under the same licence.