v0.5.0 — samocall: dynamic bot presence
Highlights
Project renamed: samoagent → samocall. Binary, npm package, SAMOCALL_* env vars, X-Samocall-* HTTP headers, and the ~/.samocall home dir all follow. GitHub redirects from the old repo name; the samoagent.dev domain is retained during the transition.
Dynamic bot presence. The static camera avatar is replaced by a live, token-gated presence page served by the local callback server and rendered as the bot's camera in the call:
samocall presence <listening|thinking|speaking|acting|idle> [message]— update the in-call state; bare toggles update quietly, explicit messages also appear in the Comments lane- Live "heard" lane mirrors recent transcript lines without overriding the agent-set state
join --presence-bg <sphere|field|static|cycle>— background mode;join --no-presence— opt out entirelyjoin --variant <web|web_4_core|web_gpu>— larger Recall instances for smoother rendering- Graceful degradation: if the tunnel serves a browser interstitial (free ngrok, localtunnel), the bot joins without the camera and warns, instead of failing
Security hardening. Read/write presence token split (the URL given to Recall is read-only); header-only /presence.json; constant-time token comparison; tokens passed to the helper server via environment, not argv; loopback bind; 1 MB request body cap.