Skip to content

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