All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.9.0 - 2025-12-12
token:getcommand- Retrieve a machine token without running the authorization flow
-
SDK Update: runbeam-sdk 0.8.0 → 0.9.1
- Updated to runbeam-sdk 0.9.1 which includes harmony-dsl 1.9.0
⚠️ Breaking Change: JWT validation API updatedvalidate_jwt_token()now requires&JwtValidationOptionsparameter instead of integer leeway timeout- Use
JwtValidationOptions::default()for standard validation behavior - See runbeam-sdk 0.9.0 release notes for migration details
-
Harmony DSL 1.9.0 alignment
- Updated all JWT token validation calls to use new
JwtValidationOptionsAPI - Full compatibility with runbeam-sdk 0.9.1 (includes harmony-dsl 1.9.0)
- Updated all JWT token validation calls to use new
0.8.0 - 2025-11-20
harmony:installCommand- New command to download and install the Harmony binary
- Automatically detects platform and architecture
- Installs to standard locations (
~/.local/binon Unix/macOS,%APPDATA%\runbeam\binon Windows) - Support for installing specific versions with
--version - Support for custom installation directories with
--dir
- SDK Update: runbeam-sdk 0.6.2 → 0.7.2
⚠️ Breaking Change: Removed OS keyring storage (macOS Keychain, Linux Secret Service, Windows Credential Manager)- All tokens now stored using encrypted filesystem storage at
~/.runbeam/<instance_id>/auth.json - Encryption uses age encryption with keys from
RUNBEAM_ENCRYPTION_KEYenv var or auto-generated at~/.runbeam/<instance_id>/encryption.key - Migration required: Users must re-authenticate after upgrading (
runbeam login) - Fixed: Runbeam configuration synchronization issues
- Simplified Dependencies: Removed system dependencies (dbus, libdbus-sys, openssl, openssl-sys)
- Better Cross-Platform Support: Pure Rust implementation with no platform-specific FFI
- Improved Deployment: Better support for headless systems, CI/CD pipelines, Docker, Kubernetes, cloud VMs
- Smaller Binary Size: Faster compilation and reduced binary footprint
- Upgrade to version 0.7.0
- Run
runbeam loginto re-authenticate (existing keyring tokens will not be migrated) - Re-authorize Harmony instances with
runbeam harmony:authorize --label <name>
Note: Machine tokens expire after 30 days anyway, so losing keyring-stored tokens has minimal long-term impact.
- Dependencies updated
- Tests deprecations fixed
-
harmony:reloadCommand- New command to reload Harmony instance configuration
- Triggers a reload of the Harmony proxy without restarting the service
- Useful for applying configuration changes dynamically
-
harmony:updateCommand- New command to push configuration updates to Runbeam Cloud
- Synchronizes local Harmony configuration with the cloud platform
- Enables centralized configuration management
- Includes comprehensive integration tests
-
Gateway ID Tracking
- CLI now tracks and persists gateway IDs from Runbeam authorization responses
- Gateway IDs stored alongside Harmony instance configuration
- Enables better correlation between local instances and cloud resources
- Backward compatible with instances without gateway IDs
-
Runbeam Disabled Handling
- Improved error handling when Runbeam integration is disabled in Harmony
- Provides clear feedback when attempting operations on instances without Runbeam enabled
- Clippy lint fixes for code quality
- SDK Update: runbeam-sdk 0.4.0 → 0.5.0
⚠️ Breaking Change: Change Management API endpoints updated from/gateway/*to/api/changes/*- Added support for pushing configuration to Runbeam Cloud (used by
harmony:update) - Added transform resource retrieval functionality
- Requires Runbeam API v1.2 or later
- macOS Keyring Compatibility
- Fixed keyring storage compatibility issues on macOS (via SDK update)
- Improved reliability of secure token storage on macOS Keychain
- Updated
runbeam-sdkfrom0.4.0to0.5.0
-
Secure User Token Storage
- User authentication tokens now stored securely via
runbeam-sdkv0.3.2 - Primary: OS keyring (Keychain/Secret Service/Credential Manager)
- Fallback: Encrypted filesystem storage with ChaCha20-Poly1305 AEAD
- Automatic encryption key generation and secure storage
- Token isolation from machine tokens
- User authentication tokens now stored securely via
-
Automatic Migration
- Automatic migration from legacy plaintext
~/.runbeam/auth.jsonto secure storage - Migration happens transparently on first run after upgrade
- Legacy plaintext file removed after successful migration
- No user action required
- Automatic migration from legacy plaintext
-
Enhanced Security
- All user tokens encrypted at rest (except in OS keyring)
- Encryption keys stored securely in OS keyring, never on disk in plaintext
- Transparent encryption/decryption with no user configuration needed
- Per-token-type storage isolation (user tokens separate from machine tokens)
-
Storage Module Refactoring
- Refactored
src/storage.rsto use SDK generic secure storage save_user_token(),load_user_token(),clear_user_token()use SDK functions- Removed duplicate encryption key management code
- Storage now handled entirely by SDK
- Refactored
-
Encryption Key Management (Deprecated)
- Harmony encryption key commands now show deprecation messages
harmony:set-key,harmony:show-key,harmony:delete-keydeprecated- SDK handles all encryption keys automatically
- User-facing encryption key management no longer needed
-
Documentation
- Updated README.md with secure storage information and migration notes
- Updated WARP.md with secure storage architecture
- Added migration guide for upgrading from v0.4.x
- Documented automatic token migration process
- Marked encryption key commands as deprecated
-
Dependencies
- Updated to
runbeam-sdk = "0.3.2"with generic secure storage support - Removed unused encryption-related dependencies from CLI
- Updated to
- Improved Token Protection
- User tokens no longer stored in plaintext JSON files
- Automatic encryption for filesystem fallback
- OS-native credential storage used when available
- Encryption keys managed securely by SDK
- Automatic migration from legacy plaintext storage
- No breaking changes to CLI commands
- Existing workflows continue to work without modification
- Legacy token files automatically cleaned up after migration
0.4.0 - 2025-10-28
- SDK Integration: Migrated JWT verification and authentication logic to
runbeam-sdkv0.2.0- Removed 441 lines of duplicate JWT verification code from CLI
- Authentication now uses SDK's
AuthManagerfor token management - JWT verification now handled by SDK's
verify_token()function - Simplified codebase maintenance by centralizing auth logic in SDK
- Dependencies: Updated to use
runbeam-sdk = "0.2.0"with async runtime support- Added
tokioruntime for SDK integration - Removed direct dependencies on
jsonwebtoken,base64, andurl(now via SDK)
- Added
- Local JWT verification module (
src/jwt.rs) - functionality moved to SDK - Direct JWKS fetching and caching logic - now handled by SDK
0.3.0 - 2025-10-26
- JWT RS256 Verification: Local JWT token verification using RS256 asymmetric cryptography
- Validates tokens using public keys from JWKS endpoint
- Supports key rotation via Key ID (
kid) in JWT header or payload - Automatic JWKS caching with 1-hour TTL (configurable via
RUNBEAM_JWKS_TTLenv var) - Graceful fallback to first RS256 key when
kidis missing
- New Command:
runbeam verify- Verify stored authentication token- Displays comprehensive token information (issuer, subject, expiration)
- Shows user and team details from JWT claims
- Calculates and displays time remaining until token expiry
- Clear error messages with troubleshooting guidance
- Token Verification on Login: Automatically verifies tokens after successful authentication
- Provides immediate feedback on token validity
- Validates signature using RS256 with JWKS public key
- JWT Validation: Migrated from expecting HS256 (symmetric) to RS256 (asymmetric) tokens
- Issuer Validation: URL normalization for flexible issuer claim matching
- Error Handling: Enhanced error messages for JWT verification failures
- Network errors (timeout, connection refused, DNS failures)
- Invalid token signatures
- Expired tokens
- Missing required claims
- Dependencies: Added
jsonwebtoken,base64, andurlcrates for JWT support
- Improved error reporting for authentication polling
- Better handling of non-success HTTP responses during login flow
- Added debug logging for JWT verification troubleshooting
- Asymmetric Token Verification: Tokens are now verified using public keys instead of shared secrets
- Key Rotation Support: Automatic key selection via
kidenables seamless key rotation - JWKS Caching: Reduces network calls while maintaining security with TTL-based refresh
- Updated README with token verification examples
- Added comprehensive inline documentation for JWT module
- Updated WARP.md with verify command usage
0.2.0 - 2024-XX-XX
- Initial CLI implementation
- Browser-based OAuth authentication
- Harmony instance management
- Configuration management (
config:set,config:get,config:unset) - Harmony authorization flow
- Improved logging and verbosity controls
0.1.0 - 2024-XX-XX
- Initial release
- Basic CLI structure
- Authentication commands (
login,logout) - Harmony commands (
harmony:add,harmony:list,harmony:remove) - Harmony management API integration