Skip to content

Releases: NikolayS/samograph

v0.7.1

Choose a tag to compare

@NikolayS NikolayS released this 24 Jun 15:31
4a390e0

What's changed since v0.7.0

  • fix: surface transcription-provider failures instead of sitting silently deaf (#33, #34) — the bot now reports provider/connection failures rather than appearing to listen while deaf.
  • feat: selectable library of ~10 chat-chime sounds (#31).
  • docs: publish samograph.dev product spec to blueprints/ (#32).

Full changelog: v0.7.0...v0.7.1

v0.7.0

Choose a tag to compare

@alexsamokhvalov alexsamokhvalov released this 19 Jun 22:59

What's new since v0.6.2

Features

  • Self-introduction in meeting chat — new samograph intro command and join --intro; the bot can greet the call when it joins (#27).
  • Audible chat chimesamograph chat now plays a soft chime into the call audio via Recall's output_audio (not just the camera page, which is silent in the headless renderer), and the camera cue now animates on every presence background including the static robot (#26).
  • Soft chime on the bot camera when the bot posts in chat (#25).
  • Presence camera lanes show newest at the bottom (#24).

Fixes

  • Tunnel health-check no longer hangs — added a 5s AbortSignal.timeout to probeTunnelHealth (#29).

Docs

  • Codified the samorev review gate for merges in CLAUDE.md (#30).

samograph v0.6.1

Choose a tag to compare

@NikolayS NikolayS released this 11 Jun 15:27

Published to npm: npm i -g samograph. Higher-quality static robot avatar (768px) and chrome-free presence in robot mode (no header/lanes/FPS). Defaults: robot look, web_4_core, --dict postgresfm.

samograph v0.6.0

Choose a tag to compare

@NikolayS NikolayS released this 11 Jun 14:29

Renamed from samocall to samograph. New defaults: presence look = full-frame static samoagent robot avatar, Recall bot variant web_4_core, and --dict postgresfm. State dir is now ~/.samograph; env vars are SAMOGRAPH_*.

v0.5.0 — samocall: dynamic bot presence

Choose a tag to compare

@NikolayS NikolayS released this 10 Jun 07:18
3ca3977

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 entirely
  • join --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.

Quality

  • 324 tests (bun:test), five rounds of multi-agent REV review on PR #21
  • Full changes: #21

v0.4.1

Choose a tag to compare

@NikolayS NikolayS released this 31 May 03:32

Patch release after the public npm launch.

Changes:

  • Add command-specific help for join/frame/doctor.
  • Add samoagent doctor for local prerequisite checks.
  • Include docs/release-checklist.md in the repo and package.
  • Keep CI/publish workflows ready for GitHub Actions Node 24.

Validation:

  • bun test
  • bun run build
  • npm pack --dry-run
  • GitHub CI green

v0.4.0

Choose a tag to compare

@NikolayS NikolayS released this 30 May 23:53

What's new in v0.4.0

Features

  • WebSocket frame capture on by defaultsamoagent join now enables in-memory frame capture automatically. No RTMP, no ngrok TCP, no card verification needed. Use --no-ws-video to opt out.
  • --version / -v / -V flagssamoagent --version prints the installed version.
  • Improved --help output — documents the RECALL_API_KEY requirement and available flags upfront.
  • samoagent frame --archive now also updates latest.png (previously wrote only the timestamped copy).

Bug fixes

  • server.ts body-size check now uses byte length (not UTF-16 string length).
  • Port validation: --port 0, --port 99999, --port abc all fail with a clear error.
  • samoagent watch prints No active session. Run 'samoagent join' first. to stderr instead of silently exiting when no session is active.

Test coverage

  • 200 tests (was 187): added cmdTranscript, cmdStatus, cmdJoin edge cases (ngrok null path, --rtmp failure branches, --rtmp-url localhost).

Packaging

  • CLAUDE.md removed from npm tarball (was internal agent instructions, not for consumers).
  • .npmignore added.
  • Apache-2.0 license.

Housekeeping

  • Python legacy test suite deleted (1,367 lines testing code that no longer exists).
  • README accuracy audit: all commands, flags, defaults, and failure modes verified against the running code.
  • samoagent.dev live on HTTPS.

Install

npm install -g samoagent

Requires: RECALL_API_KEY env var and ngrok installed and authenticated.

v0.3 - TypeScript CLI + no-TCP frame capture

Choose a tag to compare

@NikolayS NikolayS released this 30 May 20:25
ee0eeba

Highlights

  • Rewrote the CLI path in TypeScript/Bun while keeping the legacy Python test suite green.
  • Added no-TCP live frame capture with samoagent join --ws-video.
  • Added on-demand frame export with safe defaults: incoming frames stay in memory until samoagent frame is called.
  • Hardened public tunnel surfaces with per-run tokens and safer runtime file permissions.

Agent workflow

samoagent join "<meeting-url>" --ws-video --name Leo --dict postgresfm
samoagent watch
samoagent frame
samoagent chat "..."
samoagent leave

Frame capture

  • Uses Recall video_separate_png.data over WSS through the normal ngrok HTTP tunnel.
  • Avoids ngrok TCP, RTMP, and card verification for the preferred frame path.
  • samoagent frame writes ~/.samoagent/frames/latest.png and latest.json only on demand.
  • samoagent frame --archive creates timestamped PNG/JSON artifacts with bot, source, and participant metadata.
  • samoagent join --frame-dir DIR makes the frame output location configurable.

Safety

  • /webhook is token-protected and size-limited.
  • /video-ws, /frame, and /frame.json are token-protected.
  • Tokenized WSS URLs are not printed or stored in state.
  • Default runtime state is owner-only: 0700 directory, 0600 file.
  • Explicit user-selected directories such as /tmp are not chmodded.

Validation

  • bun run build
  • bun test - 167 pass, 0 fail
  • Legacy Python pytest - 99 passed
  • Manual WebSocket/frame smoke passed
  • Independent test agent found no blockers
  • Independent REV-style review found no findings

v0.1 — Initial release

Choose a tag to compare

@NikolayS NikolayS released this 28 May 00:49

samoagent v0.1

CLI AI meeting agent. Joins Zoom/Google Meet calls via recall.ai, transcribes live using Deepgram Nova-3 (Russian + English mixed), and provides real-time context to an AI agent session.

Features

  • Join Zoom/Google Meet calls via recall.ai as a named bot (--name TARS)
  • Live transcription (Russian + English) via Deepgram Nova-3 with custom keyterm dictionaries for domain-specific vocabulary (e.g. postgresfm for PostgreSQL terminology)
  • Real-time transcript streaming via samoagent watch — designed for AI agent monitoring with the Monitor tool (persistent=true)
  • Meeting chat messages via samoagent chat — send messages into the call when needed
  • Live frame capture via RTMP pipeline: recall.ai streams mixed call video to a cloud VM running mediamtx, then samoagent frame grabs a live frame via ffmpeg
  • Auto-download of mediamtx binary on first use — no manual setup required
  • Bot avatar served via GitHub Pages (nikolays.github.io/samoagent) — animated robot with pulsing red recording indicator
  • State management in ~/.samoagent/ — bot_id, PIDs, webhook URL, and transcript path persisted across commands
  • CLAUDE.md agent workflow documentation — step-by-step instructions baked into the repo for AI agents joining calls

Commands

Command Description
samoagent join <url> Join a call and start the webhook server + ngrok tunnel
samoagent watch Stream live transcript to stdout
samoagent chat <message> Send a message into the meeting chat
samoagent frame Capture a live video frame (requires --rtmp-url)
samoagent screenshot Capture the local Mac screen
samoagent status Check bot status
samoagent transcript Read full post-call transcript from recall.ai
samoagent leave Remove bot, kill ngrok/server, clean up state
samoagent dicts List available keyword dictionaries

Setup

pip install -r requirements.txt
export RECALL_API_KEY=your_key
python3 samoagent join "https://zoom.us/j/123456" --name TARS --dict postgresfm

Requires: Python 3.9+, ngrok installed and authenticated, RECALL_API_KEY.