Skip to content

Releases: fcavalcantirj/agent-faces

Agent Faces v0.2.0 — proven with real agents 🤝

Choose a tag to compare

@fcavalcantirj fcavalcantirj released this 20 Jul 19:26

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-port override. Includes LISTEN-scoped lsof, classification-scoped SIGKILL escalation, ghost-PID handling, and a TCP connect-probe backstop so an empty scan can never silently lie into an EADDRINUSE.
  • hermes-serve.mjs — stand up a Hermes api_server for 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=hermes adapter now speaks the real NousResearch api_server wire contract: one OpenAI-shaped /v1/chat/completions call per turn with X-Hermes-Session-Id response-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 for useSyncExternalStore, 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 🗣️😃

Choose a tag to compare

@fcavalcantirj fcavalcantirj released this 20 Jul 02:14

Give your AI agent a talking, lip-syncing face.

demo

Highlights

  • The face — ~4,700-particle WebGL face with 12 emotions (neutralglitch), 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 OpenAI gpt-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 commandnode skill/agent-face/scripts/start.mjs installs 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-port to override)
  • Portable Agent Skillskill/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.