Install
The routes are ordered from easiest to most hands-on. Every route needs Node 22 or later, and Claude Code or Codex must already be installed and signed in on its own.
The cask is prepared but not usable yet. It works once the first GitHub release archive and matching cask are published. Until then, install from source.
brew tap nord-forge/fonn https://github.com/nord-forge/fonnbrew install --cask nord-forge/fonn/fonnThe cask installs the CLI only. It depends on Homebrew Node and fetches locked runtime dependencies on your machine without sudo. See distribution.
git clone https://github.com/nord-forge/fonn.gitcd fonnnpm ci --ignore-scriptsnpm run buildnode packages/cli/dist/cli/main.js --helpThe checkout does not install a global command. Run the built CLI against a project with --cwd:
node packages/cli/dist/cli/main.js claude --cwd /absolute/path/to/projectTo type fonn instead, print an alias line from inside the checkout and add it to your shell profile, such as ~/.zshrc:
echo "alias fonn='node $PWD/packages/cli/dist/cli/main.js'"Use only the filter with your existing Claude Code or Codex. You need Node 22 or later. No Fonn CLI, npm install or provider SDK is involved. From the project where you want filtering:
mkdir -p scripts/fonn-filterfor file in hook.mjs index.mjs adapters.mjs artifact-store.mjs LICENSE; do curl -fL "https://raw.githubusercontent.com/nord-forge/fonn/main/standalone/filtering/$file" \ -o "scripts/fonn-filter/$file"donenode scripts/fonn-filter/hook.mjs --helpThen give your agent this prompt. It keeps your existing hooks and permissions, and leaves Codex hook trust to you.
Read scripts/fonn-filter/*.mjs and its LICENSE. Configure this local filter for the agent I am using: merge a Bash PostToolUse hook into .claude/settings.local.json for Claude Code, or .codex/hooks.json for Codex. Use absolute, correctly quoted paths to Node, hook.mjs and this project's .fonn/filtering directory, with --provider claude or codex and --mode filter. Preserve all existing hooks, permissions and policies; change no global settings and install no CLI, npm packages or SDKs. Add .fonn/ to .gitignore if needed. Explain how to recover full originals using the footer's bounded read command. For Codex, leave the required /hooks review and trust to me; do not bypass it. Show the local changes and any manual step. Do not make model requests to test this.The hook accepts --level strict|standard|similar; see filter levels. The local filtering guide has complete hook examples and shows how to pin downloads to one reviewed commit.