Official Python SDK for VibeControls — thin shell over burdenoff-sdk-libs
Project description
vibecontrols-sdk
Official Python SDK for VibeControls -- development environment management for the Burdenoff platform.
Features
- Async/await support built on
httpx - Dual-endpoint GraphQL client (workspace + global gateways)
- 14 domain modules covering the full VibeControls API
- Multiple auth flows: email/password, device code, PKCE, client credentials
- Automatic token refresh with configurable callback
- Retry with exponential backoff
- Typed error hierarchy
- Full type hints with
py.typedmarker
Installation
pip install vibecontrols-sdk
# Development install
pip install -e ".[dev]"
Quick Start
import asyncio
from vibecontrols_sdk import VibeControlsSDK, VibeControlsConfig
async def main():
sdk = VibeControlsSDK(VibeControlsConfig(
workspace_endpoint="https://graphqlworkspaces.burdenoff.com/workspaces/graphql",
global_endpoint="https://graphql.burdenoff.com/global/graphql",
))
# Sign in with email/password
auth = await sdk.auth.sign_in("user@example.com", "password")
print(f"Signed in as {auth['user']['fullName']}")
# List vibes
vibes = await sdk.vibes.list()
# List sessions
sessions = await sdk.sessions.list()
await sdk.close()
asyncio.run(main())
Configuration
from vibecontrols_sdk import VibeControlsConfig
config = VibeControlsConfig(
workspace_endpoint="https://graphqlworkspaces.burdenoff.com/workspaces/graphql",
global_endpoint="https://graphql.burdenoff.com/global/graphql",
# OAuth2 (optional, for device code / PKCE / client credentials flows)
oidc_issuer="https://auth.burdenoff.com",
client_id="vibecontrols-cli",
client_secret=None, # Only for client credentials flow
redirect_uri=None, # Only for PKCE flow
# Pre-existing tokens (optional)
api_key=None,
access_token=None,
refresh_token=None,
workspace_token=None,
timeout=30.0, # Request timeout in seconds
auto_refresh=True, # Auto-refresh tokens before expiry
on_token_refresh=None, # Callback for external token persistence
)
Modules
All methods are async. Access each module as a property on the VibeControlsSDK instance.
| Module | Property | Description |
|---|---|---|
| Auth | sdk.auth |
Sign in/up, sign out, token refresh, device code, PKCE, client credentials |
| Agents | sdk.agents |
Agent CRUD, heartbeat, probes, plugin management |
| Vibes | sdk.vibes |
Vibe (project/workspace) CRUD and management |
| Sessions | sdk.sessions |
Terminal session management |
| Notes | sdk.notes |
Note CRUD operations |
| Configuration | sdk.configuration |
Key-value configuration management |
| Webhooks | sdk.webhooks |
Webhook CRUD and management |
| Docs | sdk.docs |
Documentation site management |
| VibeDeck | sdk.vibedeck |
VibeDeck management (decks and buttons) |
| Targets | sdk.targets |
Target machine management |
| Audit | sdk.audit |
Audit log queries |
| UI Session | sdk.ui_session |
UI session state management |
| Tunnels | sdk.tunnels |
Agent tunnel management |
| AI Tool Events | sdk.ai_tool_events |
AI tool event tracking |
Authentication Flows
Email / Password
auth = await sdk.auth.sign_in("user@example.com", "password")
Device Code (CLI / headless)
device = await sdk.auth.start_device_code_flow()
print(f"Visit {device['verification_uri_complete']} and enter code {device['user_code']}")
# SDK polls automatically until the user authorizes
PKCE (browser-based)
challenge = sdk.auth.build_authorization_url()
# Redirect user to challenge["url"]
# After callback:
result = await sdk.auth.exchange_auth_code(code, challenge["codeVerifier"])
Client Credentials (machine-to-machine)
config = VibeControlsConfig(
...,
client_id="my-service",
client_secret="secret",
)
sdk = VibeControlsSDK(config)
# Tokens are obtained automatically on first request
Error Handling
from vibecontrols_sdk.errors import (
VibeControlsError,
AuthenticationError,
AuthorizationError,
NetworkError,
ValidationError,
RateLimitError,
DeviceCodeExpiredError,
DeviceCodeDeniedError,
)
try:
await sdk.auth.sign_in("user@example.com", "wrong")
except AuthenticationError:
print("Invalid credentials")
except NetworkError:
print("Could not reach the API")
except VibeControlsError as e:
print(f"SDK error: {e}")
Examples
See the examples/ directory:
basic_usage.py-- Sign in, list vibes and sessionsadvanced_usage.py-- Device code flow, PKCE flow, token management
Development
# Create virtual environment
python -m venv venv && source venv/bin/activate
# Install with dev dependencies
pip install -e ".[dev]"
# Format
black src/ tests/ examples/
isort src/ tests/ examples/
# Lint
flake8 src/ tests/ examples/
mypy src/
# Test
pytest
pytest --cov=vibecontrols_sdk --cov-report=html
Project Structure
vibecontrols-sdk-python/
src/vibecontrols_sdk/
__init__.py # VibeControlsSDK facade
client/ # Dual-endpoint GraphQL client
auth/ # Auth module + PKCE utilities
agent/ # Agent management
vibe/ # Vibe management
session/ # Session management
note/ # Note management
configuration/ # Key-value config
webhook/ # Webhooks
docs/ # Documentation sites
vibedeck/ # VibeDeck (decks + buttons)
target/ # Target machines
audit/ # Audit logs
ui_session/ # UI session state
tunnel/ # Tunnels
ai_tool_event/ # AI tool events
types/ # Type definitions
errors.py # Error hierarchy
tests/
examples/
docs/
pyproject.toml
License
Proprietary -- Copyright Burdenoff Consultancy Services Pvt. Ltd.
Support
- Issues: GitHub Issues
- Docs: docs.vibecontrols.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vibecontrols_sdk-2026.527.2.tar.gz.
File metadata
- Download URL: vibecontrols_sdk-2026.527.2.tar.gz
- Upload date:
- Size: 12.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
877bf5d84c188420d30c6fdab9fba107036cf6ab8afa0de869988480afdd09ca
|
|
| MD5 |
b2f8c3d05f55fa81fed9c0f313231c2a
|
|
| BLAKE2b-256 |
875b938b1a1028987e36bec0a092b9210fefb48bb4e54012f2e51619e285c833
|
File details
Details for the file vibecontrols_sdk-2026.527.2-py3-none-any.whl.
File metadata
- Download URL: vibecontrols_sdk-2026.527.2-py3-none-any.whl
- Upload date:
- Size: 8.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61634f94d3ea5c25d171a60d0f95dd20f24a001f1a7fbcc1196bff15438eef46
|
|
| MD5 |
b702faefc906e84a32067da0df39b12e
|
|
| BLAKE2b-256 |
dd848a8e55c388d6b0d3a6b1ca97de4190678f606812da25749852bb2bc9d899
|