Skip to content

wavekat/wavekat-platform-client

Repository files navigation

Crates.io docs.rs

Rust client for the WaveKat platform — auth, sessions, artifact upload.

Warning

Early scaffolding. No public API yet. See Status below.

Why this crate exists

The WaveKat product surface includes several Rust consumers that need to talk to the same platform:

  • wavekat-cliwk, the developer CLI (login, projects, exports).
  • wavekat-voice — the desktop daemon, which will upload call recordings and transcripts to the platform on the user's behalf.
  • Future WaveKat tools.

Today the auth + HTTP plumbing lives inside wavekat-cli's binary. Pulling a CLI tool into a Rust app to reuse its auth code is the wrong shape: it drags in CLI-only dependencies (clap, arrow, parquet, …), the name reads wrong in another app's Cargo.toml, and the CLI's release cadence couples to consumers that have nothing to do with wk features.

This crate is the one place that knows how to talk to platform.wavekat.com. Each consumer wires its own storage policy (the CLI uses a JSON file at ~/.config/wavekat/auth.json; wavekat-voice uses the OS keychain) — the crate itself stores nothing.

Status

Surface State
Client (reqwest-backed bearer HTTP) Coming in v0.0.1 — port from wavekat-cli/src/client.rs.
Loopback OAuth handshake Coming in v0.0.1 — port from wavekat-cli/src/commands/login.rs.
/api/me typed wrapper v0.0.1.
Token revoke (/api/auth/cli/tokens/revoke-current) v0.0.1.
Artifact upload (3-step: create → presigned PUT → finalize) v0.0.2+ — once recording lands in wavekat-voice.
CLI migration to depend on this crate Follow-up. The CLI keeps working as-is until then.

Design

  • Zero opinion on storage. The crate exposes a Client::new(base_url, token) constructor. Consumers load the token from wherever fits — keychain, file, env var, in-memory test fixture — and hand it in.
  • Single bearer token shape: wk_… issued by POST /api/auth/cli/tokens. The route path is historical (the CLI was the only consumer originally); the platform mints the same kind of token for any caller that completes the loopback OAuth flow.
  • No async runtime opinion in the surface — uses reqwest async with whatever runtime the consumer brings (tokio in practice).

License

Apache-2.0. See LICENSE.

About

Rust client for the WaveKat platform — auth, sessions, artifact upload. Shared by wavekat-cli and wavekat-voice.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors