npx charon-hooksRuns on port 3000 by default. Open http://localhost:3000 to access the dashboard.
All configuration and data is stored in ~/.charon/:
~/.charon/
├── config/
│ ├── config.yaml # Server settings
│ └── triggers.yaml # Trigger definitions
├── sanitizers/ # Custom sanitizer scripts
├── charon.db # SQLite database
└── charon.pid # PID file (when running)
Override with CHARON_DATA_DIR environment variable:
CHARON_DATA_DIR=/custom/path npx charon-hooksnpx charon-hooks --service status # Check if running
npx charon-hooks --service start # Start in background
npx charon-hooks --service stop # Stop background process
npx charon-hooks --service install # Generate system service filesGenerate service files for your OS:
npx charon-hooks --service installLinux (systemd):
mkdir -p ~/.config/systemd/user
cp ~/.charon/service/charon-hooks.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable charon-hooks
systemctl --user start charon-hooksmacOS (launchd):
cp ~/.charon/service/com.charon.hooks.plist ~/Library/LaunchAgents/
launchctl load ~/Library/LaunchAgents/com.charon.hooks.plistconfig.yaml - Server settings:
server:
port: 3000triggers.yaml - Trigger definitions:
triggers:
- id: my-webhook
name: "My Webhook"
type: webhook
enabled: true
sanitizer: passthrough
template: "Received: {message}"
egress: consoleFor local development from source:
git clone https://github.com/NaxYo/charon
cd charon
bun install
bun devDevelopment mode (bun dev) uses the current directory for config/data instead of ~/.charon/.
Install the Charon plugin for Claude Code:
/plugin marketplace add NaxYo/cc-marketplace
/plugin install charon
See charon-plugin for plugin documentation.