Releases: fcavalcantirj/agent-faces
Releases · fcavalcantirj/agent-faces
Release list
Agent Faces v0.2.0 — proven with real agents 🤝
The release where other agents started using it — and everything they touched got verified live.
Highlights since v0.1.0
- Identity-scoped port guard — the launcher now only auto-kills processes it can tie to this app (cwd/command-line classification via the new
portguard.mjs); a foreign holder gets a refusal with its identity printed and a--take-portoverride. Includes LISTEN-scopedlsof, classification-scoped SIGKILL escalation, ghost-PID handling, and a TCP connect-probe backstop so an empty scan can never silently lie into anEADDRINUSE. hermes-serve.mjs— stand up a Hermesapi_serverfor Mode B without touching your live gateway: dedicated-profile launch, env injection (API_SERVER_*), venv console-script autodetect, pidfile/process-group teardown, and a reuse path that refuses to spawn onto an answering port.- Live-verified Hermes contract — the
kind=hermesadapter now speaks the real NousResearch api_server wire contract: one OpenAI-shaped/v1/chat/completionscall per turn withX-Hermes-Session-Idresponse-header continuity. Proven end-to-end by an autonomous agent on its own Raspberry Pi — identity and cross-turn memory ("You asked me — for the SECOND TIME — who I am"). - Hydration fix (React #418) — browsers with persisted conversations no longer glitch on load: the conversation store gained a pristine
getServerState()snapshot foruseSyncExternalStore, reproduced and confirmed fixed on two machines and two architectures. - README "Tested with real agents" table, launch kit (
docs/launch/), and a gallery including the shot an agent took of its own face on a Pi. - arm64 platform coverage: the full portable smoke suite (50+ checks) now runs green on Raspberry Pi.
Full journal: progress.txt. MIT.
Agent Faces v0.1.0 — first release 🗣️😃
Give your AI agent a talking, lip-syncing face.
Highlights
- The face — ~4,700-particle WebGL face with 12 emotions (
neutral→glitch), self-steered by the model via[[face:happy]]-style directives mid-reply - Real lip-sync — mouth driven by the actual audio (
wawa-lipsync); FFT-grade with OpenAIgpt-4o-mini-tts, or fully local with Kokoro on WebGPU - Voice in — in-browser Whisper (WebGPU/WASM — private, offline, $0) with hosted Groq/OpenAI fallback; push-to-talk or hands-free (VAD, half-duplex)
- Two brains, one seam — Mode A: a hosted key (Anthropic / OpenRouter / Groq). Mode B: the agent you already run — Claude Code (local Agent SDK bridge), Hermes
api_server, openclaw, Ollama — with its memory, tools, and persona - One command —
node skill/agent-face/scripts/start.mjsinstalls deps, wires env, starts bridge + app, opens the face. Port freeing is identity-scoped: it only kills its own stale processes, never your neighbor project's server (--take-portto override) - Portable Agent Skill —
skill/agent-face/is plain-node, harness-agnostic. Claude Code:cp -r skill/agent-face ~/.claude/skills/→ type/agent-face - Deploy — Vercel button or self-host Docker, next to your agent
- Zero keys still works — browser Whisper + Web Speech give you a functioning face with no accounts at all
Built by agents
Most of this repo was written autonomously, overnight, by a loop of stateless coding-agent runs. The receipts ship with the release: prd.json (the 70-task ledger) and progress.txt (the agents' append-only journal).
Six CI gates (lint, typecheck, unit tests + coverage, build, skill smoke tests, app-template parity) plus a Playwright browser e2e suite guard main. MIT.
