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

Registers Claude Code hooks. Every new Claude Code 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.

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.

CLI

covo --version
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.2.0

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.2.0
File Size Uploaded
covo_sdk-0.2.0.tar.gz 26.8 kB Details

Built distribution (wheel)

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

Total release size: 54.0 kB

Release files / covo_sdk-0.2.0.tar.gz

Download URL covo_sdk-0.2.0.tar.gz
Size 26.8 kB
Tags Source
SHA-256 checksum
How to use checksums
e88a33923f858cea74059e1da56de6af6fbe14f57ef85871f688b286fc17905b
BLAKE2b-256 checksum
How to use checksums
d29f45327ce7ea0d9d73df39dd0a70c73ee9b3319fd19ef2b2cc64f72cd06e7c
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.2.0-py3-none-any.whl

Download URL covo_sdk-0.2.0-py3-none-any.whl
Size 27.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
19004524e3bba596d8803fc4f9a0184b9625c68ae0ae4dbc0b57d2f71a5c7c23
BLAKE2b-256 checksum
How to use checksums
334a78d05d90feab0296ded17cb5ba56b600e32e6c89dc5a951fe597d75870f4
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.2.0 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