Project

waves-ruby

0.0
No release in over 3 years
A small Ruby API client and CLI for working with the Wave API.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Runtime

 Project Readme

Wave Ruby

Ruby API client and CLI for Wave.

Wave is an AI note taker for meetings and conversations, and it is one of my favorite tools in this category. Learn more at wave.co and follow @waveappai.

CLI

Available commands:

wave login
wave account
wave list
wave search "meeting content"
wave show SESSION_ID
wave transcript SESSION_ID

Use --json on any read command for machine-readable output:

wave list --json
wave account --json

You can provide credentials with --token, WAVE_API_TOKEN, or a token saved locally by wave login.

Ruby API

client = Wave::Client.new(token: ENV.fetch("WAVE_API_TOKEN"))

client.account
client.list_sessions(limit: 10)
client.search_sessions(query: "roadmap")
client.session("session_123")
client.transcript("session_123")

Development

Install dependencies:

bundle install

Run the test suite:

bundle exec rspec

Build the gem locally:

gem build wave-ruby.gemspec

Live API Verification

Copy .env.example to .env and set a real token:

cp .env.example .env

Then set:

WAVE_API_TOKEN=your_wave_api_token

Live specs are opt-in and skipped by default. Run them locally with:

WAVE_LIVE=1 bundle exec rspec spec/wave/live/client_live_spec.rb

That exercises the current live coverage for:

  • account
  • list_sessions
  • stats
  • session
  • transcript
  • search_sessions

session, transcript, and search_sessions auto-discover test inputs from your first listed session. You can make them deterministic by setting WAVE_SESSION_ID and WAVE_SEARCH_QUERY in .env.

To record local-only cassettes for every live example in the gitignored directory:

WAVE_LIVE=1 WAVE_RECORD_LIVE=1 bundle exec rspec spec/wave/live/client_live_spec.rb

Those recordings stay under spec/cassettes/local/ and must not be committed. If you want to keep an example response in the repo, convert it into a sanitized fixture under spec/fixtures/wave/ or a scrubbed example cassette under spec/cassettes/examples/.

Use the sanitization patterns in spec/support/sanitizer.rb before committing any captured API data.

See CONTRIBUTING.md for the full policy.