Skip to main content

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.typed marker

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 sessions
  • advanced_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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vibecontrols_sdk-2026.527.2.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vibecontrols_sdk-2026.527.2-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

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

Hashes for vibecontrols_sdk-2026.527.2.tar.gz
Algorithm Hash digest
SHA256 877bf5d84c188420d30c6fdab9fba107036cf6ab8afa0de869988480afdd09ca
MD5 b2f8c3d05f55fa81fed9c0f313231c2a
BLAKE2b-256 875b938b1a1028987e36bec0a092b9210fefb48bb4e54012f2e51619e285c833

See more details on using hashes here.

File details

Details for the file vibecontrols_sdk-2026.527.2-py3-none-any.whl.

File metadata

File hashes

Hashes for vibecontrols_sdk-2026.527.2-py3-none-any.whl
Algorithm Hash digest
SHA256 61634f94d3ea5c25d171a60d0f95dd20f24a001f1a7fbcc1196bff15438eef46
MD5 b702faefc906e84a32067da0df39b12e
BLAKE2b-256 dd848a8e55c388d6b0d3a6b1ca97de4190678f606812da25749852bb2bc9d899

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page