Camofox Browser v1.6.0
What's New
🔌 Plugin System
Camofox is now extensible. Features can be built as self-contained plugins with their own dependencies, config, routes, and tests — loaded automatically from plugins/.
The plugin system includes an event bus with async mutating hooks (emitAsync()) so plugins can intercept and transform 29 browser events across 7 categories (session creation, navigation, downloads, and more), shared auth so plugins inherit the server's API key, and per-plugin configuration in camofox.config.json. A plugin manager handles installation:
node scripts/plugin.js install ./my-plugin
node scripts/plugin.js remove my-plugin
node scripts/plugin.js listPlugins auto-install their own npm dependencies on startup. Want to add custom auth flows, logging, content filtering, or site-specific logic? Write a plugin — no need to fork the server. Three built-in plugins ship with this release to show the pattern.
💾 Persistence Plugin (enabled by default)
Browser sessions now survive restarts. Cookies and localStorage are saved per-user and restored automatically on the next session. No more re-authenticating after every reboot. Profiles are stored at ~/.camofox/profiles/ by default — configure it in camofox.config.json:
{
"plugins": {
"persistence": {
"profileDir": "/your/custom/path"
}
}
}(Thanks @leoneparise #50 and @eddieoz #55 for the session management groundwork.)
🖥️ VNC Plugin (opt-in) (Thanks @leoneparise! #65)
Some sites just won't let you log in programmatically — CAPTCHAs, MFA flows, or bot detection that blocks headless browsers. The VNC plugin lets you see and control the browser visually in your web browser. Log in by hand like a normal user, and the persistence plugin automatically saves that authenticated session for headless use going forward.
Enable it in camofox.config.json:
{
"plugins": {
"vnc": { "enabled": true }
}
}Then open http://localhost:6080 to interact with the browser.
🎬 YouTube Plugin (enabled by default)
YouTube transcript extraction moved from the server core into plugins/youtube/. Functionally identical — just better organized, and a good reference for how to build your own plugin.
⌨️ Unified /type Endpoint (Thanks @LolipopJ! #66)
The /type endpoint now supports a keyboard mode for key presses, modifier keys, and shortcuts alongside the existing text input mode.
🐳 Multi-Arch Dockerfile (Thanks @company8! #51)
Docker builds now download Camoufox and yt-dlp at build time with proper architecture detection. ARM and x86 builds just work.
🐛 Fixes
- Orphaned Camoufox temp files cleaned up on startup
CAMOFOX_PORTrestored to 9377 (was broken in a previous refactor)- Async plugin hooks now properly awaited for mutating events
- Plugin dependency installer handles both string and object config formats
📦 Dependencies
- Security bumps via dependabot (#63)
Tests
347 tests passing (+44 new). Auth, plugin loading, persistence, VNC, and keyboard mode all covered.
Upgrading
Drop-in replacement for 1.5.x. No breaking changes, no configuration changes needed.
Thank You
Our biggest community release — 8 PRs from 6 contributors: @leoneparise (#50), @company8 (#51), @eddieoz (#55), @jecruz (#61), @mvanhorn (#62, #65), @LolipopJ (#66).