Skip to content

Releases: sarkar-ai-taken/riva

v0.3.20 — link to rivalabs.ai by default, multi-server links

Choose a tag to compare

@sarkarsaurabh27 sarkarsaurabh27 released this 11 Sep 03:18

Pairs with Riva Server 0.1.0, the first hosted release at https://rivalabs.ai.

Links to rivalabs.ai by default

riva link start with no URL pairs with the hosted service; the web Settings panel is prefilled with it. RIVA_DEV=1 defaults to a local server, RIVA_SERVER_URL points anywhere. The community ping default moved to rivalabs.ai as well.

Link one machine to several Riva Servers

riva link start <url> adds a server instead of replacing it. Each link keeps its own API key and sync cursors; sync, riva fleet, the heartbeat daemon and riva link agents fan out to every linked server, and one being down never blocks the others. riva link status lists them, riva link unlink <url> removes one, --all removes every link. Settings shows a card per server plus an "Add another server" form. ~/.riva/server-link.json moves to a versioned multi-link layout; older single-link files are read as-is and upgraded on next save.

riva fleet on the linked path

When linked, pushes authenticate with the pairing-flow API key and file under the linked tenant. The legacy client-key path is used only for an explicit non-linked --server. Link config is reloaded per push so heartbeat sync cursors are never rolled back.

Machine identity on register

riva link start sends machine_name and machine_id with each registered agent, so the server files it on the heartbeat's device row. No more duplicate "frozen" agent rows.

Fixes

A corrupt server-link.json reads as not linked instead of raising. riva link start against a non-Riva host no longer dumps HTML, and says how to point at your own server when the hosted default is unreachable. riva link status no longer reports "Last synced: never" after a successful sync. Removed the scratch_mock_server.py stub.

See HISTORY.md for full details. PR: #39

v0.3.19 — riva link pairing & fleet roll-up

Choose a tag to compare

@sarkarsaurabh27 sarkarsaurabh27 released this 14 Jul 09:46

riva link — pair a machine with a Riva Server from the browser

Ask to pair, approve the code after signing in, done. Stable machine-id identity, revocable credentials (riva link unlink invalidates the key server-side).

Automatic roll-up sync (every 30s once linked)

Agents + lifecycle events, HMAC-verified audit log, forensic session metrics, per-model usage rollups, security findings, and consent-gated approximate location for the fleet map.

Community ping convergence

riva ping targets your linked server; pinged-and-linked machines dedupe to a single map presence.

Web dashboard

Link bubble on Settings until connected, all tabs preload, usage table properly sorted with honest n/a rows.

Usage statistics fixes

New parsers for Gemini CLI, OpenCode, and Cline; Claude Code and Codex CLI parsers updated for current on-disk schemas (both previously read 0 tokens).

See HISTORY.md for full details. PR: #38

v0.3.17 — Claude Desktop detector, lazy TUI, tray fix

Choose a tag to compare

@sarkarsaurabh27 sarkarsaurabh27 released this 23 Apr 04:37
8e8ba11

Highlights

New: Claude Desktop detector

Riva now detects the Claude Desktop Electron app alongside the existing Claude Code CLI detector. Case-sensitive matching (Claude vs claude) keeps the two cleanly separate. Reads claude_desktop_config.json (MCP servers + preferences, secrets filtered) and parses skills from local-agent-mode-sessions/skills-plugin/*/*/skills/*/SKILL.md.

Perf: lazy-load for TUI dashboard

Skills, Events, and Forensic-summary panes now fetch in a daemon thread behind a _LazyCache — re-renders are instant, first paint shows "Loading…" instead of blocking. parse_session(max_lines=) bounds the trends-path reads to 800 events per session so multi-MB session files don't block the /api/forensic/trends endpoint.

Fix: riva tray crash from broken dist-info

_get_version() now returns "unknown" when importlib.metadata.version("riva") returns None (which can happen on a half-installed dist-info, e.g. with macOS's duplicate-file " 2" suffixes), preventing a confusing TypeError: expected str … not NoneType in subprocess.Popen.

Test coverage

  • riva.core.skills: 71% → 100%
  • +15 tests for Claude Desktop detector (incl. the "does not match lowercase claude CLI" invariant)
  • Suite: 694 → 710 passing

Misc

  • SECURITY.md email → security@sarkar.ai

Full changelog: v0.3.16...v0.3.17

v0.3.16

Choose a tag to compare

@sarkarsaurabh27 sarkarsaurabh27 released this 13 Apr 16:23

Bug fix: Segfault on macOS from multi-threaded SQLite access

  • Fixed segmentation fault caused by sharing a single sqlite3.Connection across the main dashboard thread and the SessionTailer background thread introduced in v0.3.15
  • RivaStorage now uses threading.local() for per-thread connections instead of a shared connection with check_same_thread=False
  • SQLite WAL mode continues to handle concurrent file-level access safely; the fix ensures each thread owns its own connection object

Upgrade

pip install --upgrade riva

v0.3.15 — Event Depth, OTLP Receiver, Cross-Agent Skill Export

Choose a tag to compare

@sarkarsaurabh27 sarkarsaurabh27 released this 12 Apr 03:48
3460b5b

What's New

Event Stream — Real-time Tool-call Visibility

Three ingestion paths feed into a single unified event store:

  • Claude Code hooksriva hooks install claude-code registers 5 events (SessionStart, PreToolUse, PostToolUse, SubagentStop, Stop)
  • JSONL tail-watching — automatically watches ~/.claude/projects/ and ~/.cursor/projects/ for new session entries
  • OTLP HTTP receiverPOST /otlp/v1/traces|metrics|logs for any OTel-instrumented agent (LangGraph, CrewAI, etc.)

Web Dashboard — Events Tab

New sidebar tab with real-time event stream, filter controls (agent, type, time range), 3-second auto-refresh, and clickable session IDs that deep-link to forensic session analysis.

Cross-Agent Skill Export

Share skills between workspaces and across 7 AI agent frameworks:

riva skills send frontend-design --to /path/to/project2 --agent cursor

Supported targets: Claude Code, Cursor, Codex CLI, Gemini CLI, Kiro, Cline, Windsurf. Also available via the web dashboard Export Skill modal.

Generic Hook Adapter System

riva hooks list/install/uninstall/status — adding hook support for a new agent is one dict in adapters.py. Hooks use absolute Python path and silent-fail (2>/dev/null || true) for resilience.

Bug Fixes

  • Skills showing 0 uses due to workspace mismatch in invocation queries
  • Hook picking up Python 2.7 on macOS instead of Python 3
  • Hook error surfaced in Claude Code when Riva is uninstalled

Full Changelog: v0.3.13...v0.3.15

v0.3.13: Strands agent support

Choose a tag to compare

@sarkarsaurabh27 sarkarsaurabh27 released this 25 Mar 03:15
6470b6f

What's New

New Agent: Strands

  • StrandsDetector — adds support for Strands Agents, AWS's open-source Python agent SDK
  • Detects Python processes with strands in the command line
  • Parses ~/.strands/config.json when present
  • API domain: bedrock-runtime.amazonaws.com
  • Riva now supports 15 agent frameworks

Skills — All Agents (v0.3.12 work)

  • Skill discovery for Cursor, Continue.dev, Windsurf, Codex CLI, Gemini CLI, and Cline
  • Claude Code now also scans .claude/skills/*/SKILL.md for installed skills
  • Web dashboard Skills tab

See HISTORY.md for full details.

v0.3.12 — Skill Discovery for All Agents

Choose a tag to compare

@sarkarsaurabh27 sarkarsaurabh27 released this 14 Mar 05:18
ae81d15

What's new

Skills — All Agents

All supported agents now expose their native workflow concepts as riva skills:

Agent Skills concept Source
Claude Code Commands + installed skills ~/.claude/commands/*.md, .claude/skills/*/SKILL.md
Kiro Hooks + specs ~/.kiro/hooks/*.md, ~/.kiro/specs/*.md
Cursor Project rules ~/.cursor/rules/*.mdc, .cursor/rules/*.mdc
Continue.dev Slash commands slashCommands[] in ~/.continue/config.json
Windsurf Memories + rules ~/.codeium/windsurf/memories/*.md, .windsurfrules
Codex CLI Instructions ~/.codex/instructions.md, AGENTS.md
Gemini CLI Instructions ~/.gemini/GEMINI.md, GEMINI.md
Cline Rules ~/.clinerules, .clinerules

Forensics

  • Skill tool invocations (Skill tool_use blocks) in Claude Code sessions are now detected during riva skills scan and linked to the correct skill

CLI

  • --mcp-help renamed to --skill-help
  • Hub ping removed from stats, forensics, skills, audit, and other read-only commands — only fires in riva watch, riva scan, riva ping

Bug Fixes

  • Tray binary now recompiles automatically on version upgrade via version sidecar file
  • __init__.py version kept in sync with pyproject.toml

Full changelog

See HISTORY.md

v0.3.11 — Skills System, Kiro Agent, TUI Tabs

Choose a tag to compare

@sarkarsaurabh27 sarkarsaurabh27 released this 14 Mar 04:32

What's new

Skills System

  • riva skills command group — list, scan, add, share, export, import
  • Track slash-command workflows with usage count, success rate, backtrack rate, avg token cost
  • TOML-based definitions: ~/.riva/skills.toml (global) and .riva/skills.toml (workspace)
  • Auto-discovery from Claude Code ~/.claude/commands/*.md and Kiro hooks/specs
  • Forensic linkage — /commit, /review-pr, etc. auto-detected in session JSONL

Kiro Agent Support

  • New KiroDetector for AWS's Kiro AI IDE
  • Matches Electron-based process; parses settings, auth, MCP, hooks, steering files
  • Discovers skills from ~/.kiro/hooks/ and ~/.kiro/specs/

TUI — Skills Tab

  • Press 1/m for Main, 2/s for Skills in riva watch
  • Non-blocking keypress reader via termios background thread

Web Dashboard — Skills Tab

  • New Skills tab in sidebar (star icon)
  • /api/skills endpoint with success% color-coding, tag chips, shared badge

Forensics — Non-Interactive Session Fix

  • Sessions from claude -p "…", headless scripts, and MCP tool calls now show full turns, actions, and token counts
  • Root cause: content blocks format ([{"type":"text","text":"..."}]) was not handled alongside plain string prompts

CLI

  • riva --mcp-help — structured Markdown for AI agent consumption
  • riva --no-ping — skip automatic hub ping for one invocation
  • Auto-ping on every command (background daemon thread, consent-gated)

Full changelog

See HISTORY.md for the complete release notes.

v0.3.10 — Web logo + CI fixes

Choose a tag to compare

@sarkarsaurabh27 sarkarsaurabh27 released this 08 Mar 21:29
986fc9b

What's new

  • Riva logo in web dashboard favicon and sidebar (replaces placeholder "R")
  • Grafana dashboard title updated to "RIVA — AI Agent Command Center"
  • CI lint fixes

Upgrade

pip install --upgrade riva

v0.3.9 — Riva Hub community telemetry

Choose a tag to compare

@sarkarsaurabh27 sarkarsaurabh27 released this 08 Mar 10:16
6922696

What's new

Riva Hub — Community Map

  • riva ping — auto-detects running agents, resolves city/country/lat/lon via ip-api.com, and POSTs to the Riva Hub
  • Opt-in consent — one-time prompt on riva scan and riva watch
  • Auto-ping — fires silently in background on every scan/watch session after consent
  • All 13 supported agents mapped to canonical hub slugs

Upgrade

pip install --upgrade riva

Try it

riva ping