Skip to main content
Yanked

This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.

Covo Python SDK

Connect the Python agent you already have to a shared Covo session. Your teammates open one link, watch the same run live (model calls, tool calls, results, files, errors), and exactly one person at a time holds control: new instructions, pause/resume, interrupt, approve/reject, hand over control.

The agent keeps running on your machine or server. Your LLM keys, files and tools never leave it; only the events you share reach Covo.

Türkçe tam rehber: Covo panelinde /integrate.

Install

pip install "covo-sdk[openai]"

Python 3.11+, asyncio. The openai extra is only needed if you use instrument() with the OpenAI Python client; any OpenAI-compatible endpoint works (OpenAI, OpenRouter, DeepSeek, Ollama, vLLM, ...).

Three lines of integration

from openai import AsyncOpenAI
from covo_sdk import CovoOwner, instrument, tool

llm = instrument(AsyncOpenAI())            # 1. every model call is shared automatically

@tool(approve=True)                         # 2. tool calls are shared; this one needs approval
async def write_file(path: str, content: str) -> str:
    open(path, "w").write(content)
    return "saved"

async def run(ctx) -> str:                  # 3. your existing agent loop, unchanged
    completion = await llm.chat.completions.create(
        model="gpt-4.1-mini",
        messages=[{"role": "user", "content": ctx.instruction}],
    )
    return completion.choices[0].message.content

Start it from your terminal; Covo creates the shared session and prints the link:

import asyncio

async def main():
    owner = await CovoOwner.login(url="https://covo.example.com", name="Ulaş")
    client = await owner.connect(
        run=run, name="Research agent",
        capabilities=["instruct", "pause", "resume", "interrupt", "approval"],
    )
    print("Share with your team:", client.share_url)
    print("Private owner code (do not share):", await owner.browser_code())
    await client.start("Read README.md and propose a plan.")
    await client.wait()

asyncio.run(main())

What the SDK does for you

You write Covo shows Guarantees
instrument(client) model_call / model_result with the real prompt, response, measured latency and provider-reported tokens Streaming supported; calls outside a run pass through untouched; nothing is estimated or invented
@tool tool_call / tool_completed with the bound arguments, result or error, duration Sync tools run inline and bounded; async tools are cancellable for interrupt
@tool(approve=True) An approval card with the exact arguments; only the controller can decide The function body never runs on rejection (ToolRejected, or your rejected= value)
await ctx.checkpoint() Pause is acknowledged here Covo never claims "paused" before the agent actually stopped at a checkpoint
await ctx.emit(...) Anything else you want visible (thinking, resource) Redaction callback can filter content, never control data

Manual control for raw HTTP callers:

from covo_sdk import model_span

async with model_span(model, messages) as span:
    payload = await http.post(url, json=request)
    span.result(payload["choices"][0]["message"], tokens=payload["usage"]["total_tokens"])

Share a Claude Code session without writing code

covo --url https://covo.example.com --name "Ulaş" claude-code install
cd ~/work/product && covo claude-code enable   # only sessions started here are shared

Registers Claude Code hooks. Installing shares nothing on its own: a session reaches Covo only from a directory you enabled, when you run /covo-share inside Claude Code, or when it was started with COVO=1 (COVO=0 turns it off for one terminal). Every other session behaves as if Covo were not installed — no daemon, no waiting, no gated tools. A shared session prints a Covo share link; teammates watch tool calls, results and the final answer live, and the controller approves or rejects gated tools (default: Write, Edit, MultiEdit, NotebookEdit, Bash) from Covo. Watch-and-approve only: Covo cannot instruct, pause or interrupt Claude Code, and once control is handed to a teammate the owner's own terminal is blocked from new prompts until it returns. macOS, Linux and Windows 10+ (Git Bash, as Claude Code requires).

Control model

  • One controller per session, enforced server-side. Terminal and browser commands go through the same check; handing over control also locks out the owner's own terminal.
  • Interrupt cancels the running asyncio task and waits for cleanup before the replacement run starts. Do not swallow CancelledError; avoid detached threads.
  • Declare only the capabilities your agent honors. Unsupported controls are disabled in the UI.
  • Credentials live in .covo/ with owner-only permissions. Add .covo/ to .gitignore. Share only the session link.
  • HTTPS is required beyond localhost. For a Covo on a trusted LAN (private IP or .local host) pass allow_insecure_http=True (CLI: --allow-insecure-http); it is your explicit risk decision, the traffic is unencrypted and a non-private address triggers a stronger warning; use HTTPS over the internet.

CLI

covo --version
covo claude-code enable       # share Claude Code sessions started in this directory
covo claude-code disable      # stop sharing them
covo claude-code status       # scope, enabled directories, running sessions
covo code                     # new private owner code for the browser
covo state <session-id>
covo command <session-id> pause
covo command <session-id> interrupt --text "Stop, use PostgreSQL instead."

Limits

Alpha. Python 3.11+ async agents only. The SDK must be wired into the agent before the run starts; it cannot attach to an already-running process. No automatic resume after a crash: Covo marks the old run failed and waits for a new instruction. Anyone with a session link can watch, so deploy Covo for a trusted team.

Metadata

Release files for covo-sdk 0.3.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for covo-sdk 0.3.3
File Size Uploaded
covo_sdk-0.3.3.tar.gz 35.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for covo-sdk 0.3.3
File Interpreter ABI Platform
covo_sdk-0.3.3-py3-none-any.whl Python 3 none any Details

Total release size: 70.5 kB

Release files / covo_sdk-0.3.3.tar.gz

Download URL covo_sdk-0.3.3.tar.gz
Size 35.1 kB
Tags Source
SHA-256 checksum
How to use checksums
c42ccec7e21fabfc62026c22f59ef6daa9f861c850f2724f894e30814a2bebb1
BLAKE2b-256 checksum
How to use checksums
564a167a38e34d71fbd61c3b457b3097f0fd1199336125d4ee863592983a2f18
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / covo_sdk-0.3.3-py3-none-any.whl

Download URL covo_sdk-0.3.3-py3-none-any.whl
Size 35.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e2b91674afd41d80b6ed5d537f70da51f55fa5eeafe3d7d35c64c05984ee0fc6
BLAKE2b-256 checksum
How to use checksums
14fee8e9ef6297d92a90140746d5255dd891a18bf1c5f004f618920fa62addd5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release history Release notifications | RSS feed

0.3.7

2 release files

0.3.5

2 release files

This release

0.3.3 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page