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.1021.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| vibecontrols_sdk-2026.1021.1.tar.gz | 19.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vibecontrols_sdk-2026.1021.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.4 kB
Release files / vibecontrols_sdk-2026.1021.1.tar.gz
| Download URL | vibecontrols_sdk-2026.1021.1.tar.gz |
|---|---|
| Size | 19.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
da3f0c98b1dee11695251a4bbca0be87158b5dea7c16fcd3791218144cecfcf6
|
|
BLAKE2b-256 checksum How to use checksums |
7986528e5af49e58135330b7f66464fb7d728dc57f67d3e571c15cbff9cef2fe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / vibecontrols_sdk-2026.1021.1-py3-none-any.whl
| Download URL | vibecontrols_sdk-2026.1021.1-py3-none-any.whl |
|---|---|
| Size | 9.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
19d95884d71ad3be1c03a0c3f1e0a8929361e466aba7a8459a8c05dc5886dc2b
|
|
BLAKE2b-256 checksum How to use checksums |
6f0eb86d0b0fcfeec1392ee84b78d82551d65ebb3aca1857dff5c855232d28d0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Security for vibecontrols-sdk 2026.1021.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.