Faye is an always-on voice layer for OpenClaw.
You choose your wake word. Faye listens. Faye speaks back.
Latest prerelease: https://github.com/VontaJamal/faye/releases/tag/v1.2.0-alpha.2
- Install in one command:
curl -fsSL https://raw.githubusercontent.com/VontaJamal/faye/main/scripts/bootstrap.sh | bash- Follow quickstart:
docs/public-alpha-kit.md - Report bugs in the alpha feedback issue:
https://github.com/VontaJamal/faye/issues/1 - Join tester cohort thread:
https://github.com/VontaJamal/faye/issues/2
This is the fastest path for a new person:
- Install:
./scripts/install.shExpected output includes:
Dependencies OKInstall complete. Open: http://127.0.0.1:4587
- Setup:
./scripts/faye setupExpected output includes:
Configured profile ...
- Open dashboard:
- Verify health:
./scripts/faye doctorExpected: JSON with "ok": true.
- Verify voice output:
./scripts/speak.sh "Faye test voice"Expected: audible playback.
If you want more install options: docs/distribution.md
Use the canonical OpenClaw -> Faye onboarding path:
docs/openclaw-second-install.md
Faye stays a local voice/control-plane layer. OpenClaw is the prompt-cache execution layer.
- Contract:
references/shadow-prompt-caching-v1.md - Config example:
references/openclaw-prompt-caching-config.example.json - Prefix stability audit:
docs/audits/2026-02-21-prompt-cache-prefix-stability.md
Validation commands:
./scripts/prompt-cache-contract-check.sh
./scripts/prompt-cache-smoke.sh
node ./scripts/prompt-cache-baseline.mjs --runs 6./scripts/install.sh./scripts/faye setup- Open http://127.0.0.1:4587
Install now sets up command shims in ~/.local/bin so new users can run Faye from anywhere:
faye open
faye statusOne-word aliases also work:
faye-open
faye-statusIf your shell cannot find faye, run:
./scripts/install-shims.shFor onboarding other people quickly:
- One-page quickstart:
docs/public-alpha-kit.md - Troubleshooting:
references/troubleshooting.md - Media pack notes:
docs/media/README.md
- Security policy:
SECURITY.md - Privacy overview:
docs/privacy.md - Threat model:
docs/threat-model.md - Reliability targets:
references/reliability-slo.md
- Open dashboard:
faye openorfaye-open - System status:
faye statusorfaye-status - Panic stop:
faye panic --confirm "PANIC STOP"orfaye-panic --confirm "PANIC STOP" - Factory reset:
faye reset --confirm "FACTORY RESET"orfaye-reset --confirm "FACTORY RESET" - Preflight checks:
./scripts/preflight.sh - Install:
./scripts/install.sh - Setup/update:
./scripts/faye setup - Health check:
./scripts/faye doctor - First-success report:
./scripts/faye first-success --json - Metrics (JSON):
curl -s http://127.0.0.1:4587/v1/metrics - Metrics (Prom):
curl -s http://127.0.0.1:4587/v1/metrics?format=prom - Install KPI summary:
node ./scripts/install-kpi.mjs --json - List profiles:
./scripts/faye profile list - Speak test:
./scripts/speak.sh "Hello from Faye" - One-command demo:
npm run demo
Use these when debugging or when onboarding gets stuck:
Panic Stop:
- Stops listener + bridge.
- Keeps dashboard online so you can recover quickly.
- Clears volatile runtime files only.
- Run:
faye panic --confirm "PANIC STOP"Factory Reset:
- Archives diagnostics first.
- Wipes config/secrets/runtime/reports for a clean start.
- Stops listener + bridge + dashboard.
- Run:
faye reset --confirm "FACTORY RESET"Dashboard includes the same controls in the Recovery & Panic panel.
If anything feels broken, you are safe to panic-stop or factory-reset and try again.
Recommended reset loop:
faye panic --confirm "PANIC STOP"- If still broken:
faye reset --confirm "FACTORY RESET" - Re-run install/setup:
./scripts/install.sh
faye setup
faye openAfter install, Faye auto-starts when you log in:
- Listener:
./scripts/listener-control.sh status|restart - Dashboard/API:
./scripts/dashboard-control.sh status|restart - Telegram bridge:
./scripts/telegram-bridge-control.sh status|restart
Quick status check:
./scripts/listener-control.sh status
./scripts/dashboard-control.sh status
./scripts/telegram-bridge-control.sh statusExpected output includes:
listener: runningdashboard: runningtelegram-bridge: running(if Telegram is configured)
Reboot/login proof runbook: docs/always-on-proof.md
Telegram bridge is optional.
If you use it, this is the loop:
- Faye sends wake/session events to Telegram.
- OpenClaw responds with
#faye_speak. - Telegram bridge triggers local speech automatically.
Protocol reference: references/openclaw-telegram-protocol.md
Media folder:
docs/media/faye-onboarding.gifdocs/media/faye-setup-walkthrough.md
Authoring notes: docs/media/README.md
Protected by the Seven Shadows
Every PR is guarded by the Seven Shadow System — AI review detection, human sign-off enforcement, and a quality doctrine across seven domains: Security, Accessibility, Testing, Execution, Scales, Value, and Aesthetics.
- Submodule:
governance/seven-shadow-system - Policy:
.seven-shadow/policy.json - CI:
.github/workflows/seven-shadow-system.yml - Doctrine:
references/seven-shadow-doctrine.md
# Run the gauntlet
./scripts/seven-shadow-test.sh
# Smoke check
npm run guard:seven-shadow -- --policy .seven-shadow/policy-smoke.json --event governance/seven-shadow-system/examples/pr_review_event.json --event-name pull_request_reviewBurn-in: docs/burn-in.md · SLO check: ./scripts/slo-eval.sh · Canary: npm run canary
- Start here:
CONTRIBUTING.md - Roadmap:
docs/roadmap.md - Open issue templates:
.github/ISSUE_TEMPLATE - Triage playbook:
docs/triage.md
If you are just using Faye, you can skip this.
Rinshari-Eye is the design playbook for maintainers who change UI behavior:
- Repo: VontaJamal/rinshari-eye
design/rinshari-eye/templates/design-preflight.mddocs/site-soul-brief.mdAGENTS.md
MIT
Part of Sovereign — The Shadow Dominion. 🏴☠️