Skip to content
anouk GitHub

Open source · MIT · on npm

Build AI-powered browser extensions in minutes, not days.

Anouk is a small, friendly framework for shipping browser extensions that call LLMs. Plug in OpenAI, Anthropic, Together.xyz, Ollama, or Hugging Face. Get caching, rate-limit queueing, and a settings panel for free.

# scaffold a new AI extension

$ npm install -g anouk

$ anouk init my-ai-extension

$ cd my-ai-extension && npm run build

# load unpacked in chrome://extensions and you're live

5

supported provider profiles in the README

1

command to scaffold a runnable extension

MIT

license — fork, ship, sell on the store

What you get

The boring AI plumbing, already done

Providers

Bring any OpenAI-compatible provider

Anouk speaks the OpenAI chat-completions shape, so OpenAI, Anthropic, Together.xyz, Ollama, and Hugging Face Inference all plug in with a URL, an API key, and a model name. No SDK juggling, no per-provider adapters in your extension code.

Caching

Built-in caching, keyed per request

AIService caches responses by a request id and cache key you control, so repeated calls (re-opening the same email, re-running the same summary) skip the round trip and the bill.

Reliability

Rate-limit queueing out of the box

Provider quotas are unforgiving. Anouk queues calls per-provider so a clicky user does not blow your token budget or earn a 429 in the middle of a sidebar render.

UI

UI primitives for sidebars and settings

Pre-built settings panel, floating button, and sidebar component. Wire them to your extension logic and let users set provider, key, model, and system prompt at runtime without rebuilding.

CLI

CLI that scaffolds in one command

anouk init my-extension drops a working Manifest V3 project on disk with the AI service, config manager, and settings panel pre-wired. Load it unpacked in Chrome and iterate.

Workflows

Use as a library or as a starter

Already have an extension? npm install anouk and import { AIService }. Starting from zero? anouk init gives you a runnable extension that talks to a model on the first build.

Config

Runtime config, not rebuild config

Users open the settings panel to switch providers or rotate keys. You ship one bundle; they pick what to run against, including local Ollama for the privacy-conscious crowd.

How a request flows

From content script to model and back

01 · extension.js

Your code calls AIService

Pass an instruction, a piece of content, and a stable request id. Anouk handles everything from there.

02 · cache check

Lookup by request + key

If the same prompt has already been answered for this id, you get the cached response. No round trip, no spend.

03 · queue + dispatch

Rate-limit-aware fetch

The request is queued per provider so simultaneous user actions do not stampede the API. Anouk speaks the OpenAI chat-completions shape.

04 · response

Decoded, cached, returned

The model output is parsed, written to cache, and returned to your extension code as a plain string.

Honest comparisons

How Anouk fits next to other extension frameworks

Plasmo and WXT are great at building extensions in general. Anouk is opinionated about the AI part. Pick the right tool — sometimes that's not us.

FAQ

Questions builders ask first

+ Which browsers does Anouk target?

The CLI scaffolds Chrome-style Manifest V3 extensions with web_accessible_resources and host_permissions wired up. The current template is built and tested against Chromium-based browsers; the README explicitly walks through loading via chrome://extensions. Firefox and Safari WebExtensions are not currently demonstrated by the repo.

+ Which AI providers can I plug in?

Anything that speaks the OpenAI chat-completions request shape. The README documents OpenAI, Anthropic, Together.xyz, Ollama (localhost:11434), and Hugging Face Inference endpoints, and lets you point providerUrl at anything else compatible.

+ Do I need an API key at build time?

No. AIService accepts config via code, but the bundled settings panel lets the end user supply providerUrl, apiKey, model, and a system prompt at runtime. You can ship without baking a key into the extension.

+ What does the CLI actually generate?

anouk init produces a Manifest V3 project with src/aiService.js, configManager.js, settingsPanel.js, and a starter extension entry point. anouk generate extension|service|config drops the same kind of file into an existing project.

+ Is it a runtime or just a starter?

Both. You can npm install anouk and import { AIService } into your existing extension to use only the request, cache, and queue layer. Or you can use anouk init as a complete scaffold.

+ How is the framework distributed?

It is published to npm as anouk, MIT licensed, and developed in the open on GitHub under skelf-research/anouk. The current package version, install instructions, and CLI commands are linked from the docs site.

+ Where do I read the actual docs?

Documentation lives at docs.skelfresearch.com/anouk (path-based, not a subdomain). The README is a quickstart; the docs site is where examples, recipes, and the full configuration surface live.

+ Is Anouk opinionated about my extension layout?

Lightly. It expects a Manifest V3 project, an entry script, and that you let the config manager own provider settings. Beyond that the UI is up to you, including whether you use the bundled sidebar/floating button or roll your own.

Stop wiring up fetch + cache + queue

Install anouk, scaffold an extension, point it at a provider, and spend your weekend on the part of your product that is actually new.