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"])
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.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| covo_sdk-0.1.0.tar.gz | 16.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| covo_sdk-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 33.1 kB
Release files / covo_sdk-0.1.0.tar.gz
| Download URL | covo_sdk-0.1.0.tar.gz |
|---|---|
| Size | 16.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
951ad0b47c8e5f0fac1143562ad84f46a5b35fac37c079db549267425ef788dc
|
|
BLAKE2b-256 checksum How to use checksums |
5b1a532db31419b17aee8e44078e9f439e00987e596ded788f14c9f81d0f852d
|
| 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.1.0-py3-none-any.whl
| Download URL | covo_sdk-0.1.0-py3-none-any.whl |
|---|---|
| Size | 16.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bca51a7bdf433ec43aea9a841cc2411786652da4910ea1cff53e8d44321800ac
|
|
BLAKE2b-256 checksum How to use checksums |
f0328db3e37d6b15404a70fd2e831b3904cada9f4925d98685b4ba9ab20ac654
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|