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
Metadata
Release files for vibecontrols-sdk 2026.527.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| vibecontrols_sdk-2026.527.2.tar.gz | 12.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vibecontrols_sdk-2026.527.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.2 kB
Release files / vibecontrols_sdk-2026.527.2.tar.gz
| Download URL | vibecontrols_sdk-2026.527.2.tar.gz |
|---|---|
| Size | 12.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
877bf5d84c188420d30c6fdab9fba107036cf6ab8afa0de869988480afdd09ca
|
|
BLAKE2b-256 checksum How to use checksums |
875b938b1a1028987e36bec0a092b9210fefb48bb4e54012f2e51619e285c833
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.13
|
Release files / vibecontrols_sdk-2026.527.2-py3-none-any.whl
| Download URL | vibecontrols_sdk-2026.527.2-py3-none-any.whl |
|---|---|
| Size | 8.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
61634f94d3ea5c25d171a60d0f95dd20f24a001f1a7fbcc1196bff15438eef46
|
|
BLAKE2b-256 checksum How to use checksums |
dd848a8e55c388d6b0d3a6b1ca97de4190678f606812da25749852bb2bc9d899
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.13
|