Skip to main content

Python SDK for Opencode — the open source AI coding agent

Project description

Opencode Python SDK

Python SDK for Opencode — the open source AI coding agent.

pip install opencode-py

Quick start

One-shot (spawns server, asks, cleans up)

from opencode import opencode

answer = opencode("What is the capital of France?")
print(answer)

Context manager (recommended)

from opencode import Opencode

with Opencode() as ai:
    answer = ai.ask("Explain dependency injection")
    print(answer)

Streaming

with Opencode() as ai:
    for chunk in ai.ask_stream("Write a Python function"):
        print(chunk, end="")

Conversations

with Opencode() as ai:
    session = ai.create_session()
    msg1 = session.prompt("Suggest a project name")
    print(f"AI: {msg1}")
    msg2 = session.prompt("Now write a tagline for it")
    print(f"AI: {msg2}")

Multi-turn (keep mode)

from opencode import opencode

# keep=True — server and session stay alive between calls
r1 = opencode("My name is Alice", keep=True)
r2 = opencode("What's my name?", keep=True)   # remembers the conversation
r3 = opencode("That's all", keep=False)        # keep=False closes the server

Auto-tools (agentic tool execution)

r = opencode("Create a file called hello.txt", auto_tools=True)

Available tools: bash, write, edit, read, glob, grep.

By default, bash asks for permission in the console, all others run without prompting.

Custom permissions via Session.ask():

from opencode import Opencode, ToolExecutor

with Opencode() as ai:
    session = ai.create_session()
    msg = session.ask(
        "Write test.py with print('hello')",
        tool_executor=ToolExecutor(permissions={"write": "allow"}),
    )

Low-level API (any endpoint)

with Opencode() as ai:
    content = ai.client.file_read("src/main.py")
    diff = ai.client.vcs_diff("HEAD~3")
    config = ai.client.config_get()
    session = ai.client.session_create()
    ai.client.v2_session_prompt(session["id"], {"text": "Hello"})

Web UI (zero dependencies)

python web/server.py
# → open http://127.0.0.1:3000

Built-in HTTP server + proxy to opencode serve — no extra dependencies.

Interactive dialog

python live.py

Multi-turn dialog with keep=True, server cleaned up on exit via atexit.

Configuration

with Opencode(
    model="claude-sonnet-4-20250514",
    directory="/path/to/project",
    port=4096,
) as ai:
    ...

Async API

import asyncio
from opencode import AsyncOpendcode

async def main():
    async with AsyncOpendcode() as ai:
        answer = await ai.ask("Explain async/await in Python")
        print(answer)

asyncio.run(main())

Async streaming

async with AsyncOpendcode() as ai:
    async for chunk in ai.ask_stream("Write a poem"):
        print(chunk, end="")

Async conversations

async with AsyncOpendcode() as ai:
    session = await ai.create_session()
    msg1 = await session.prompt("Suggest a project name")
    msg2 = await session.prompt("Now write a tagline for it")

Async low-level client

from opencode import AsyncOpendcodeClient

async with AsyncOpendcodeClient() as client:
    health = await client.health()
    print(health)

Development

# Install in editable mode
pip install -e ".[dev]"

# Run tests
pytest

# Build
python -m build --wheel

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

opencode_py-0.1.1.tar.gz (39.4 kB view details)

Uploaded Source

Built Distribution

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

opencode_py-0.1.1-py3-none-any.whl (23.1 kB view details)

Uploaded Python 3

File details

Details for the file opencode_py-0.1.1.tar.gz.

File metadata

  • Download URL: opencode_py-0.1.1.tar.gz
  • Upload date:
  • Size: 39.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for opencode_py-0.1.1.tar.gz
Algorithm Hash digest
SHA256 a7e6e375f55375c5d1eed74f0dbdb4a946a6b379ae2aa710c6be2e0bb0a81f41
MD5 8f22306c30d7b476a728847c7c2772fd
BLAKE2b-256 3bbbea1d21c454d62ea22913822d988cd84d6950bdd72ff63e75a982c354f822

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencode_py-0.1.1.tar.gz:

Publisher: publish.yml on skislyakow/opencode-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opencode_py-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: opencode_py-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 23.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for opencode_py-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 77bee26917a9354bcfc891a5b6523fb2f63b1563d118b8e2298b5995f51f8ae2
MD5 f80ed37d8047ed35e7c6cc9e48ab17bd
BLAKE2b-256 acfc279b52cbe9046b5e1144409d277c99373597f9a1b640a49eae2dbeae8a01

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencode_py-0.1.1-py3-none-any.whl:

Publisher: publish.yml on skislyakow/opencode-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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