Skip to main content

Lightweight Python SDK for building AI agents.

Project description

mycode-sdk

Lightweight Python SDK for building AI agents.

Install

uv add mycode-sdk
# or
pip install mycode-sdk

Quick start

import asyncio

from mycode import Agent, bash_tool, read_tool


async def main() -> None:
    agent = Agent(
        model="claude-sonnet-4-6",
        api_key="YOUR_API_KEY",
        tools=[read_tool, bash_tool],
    )

    async for event in agent.achat("Read pyproject.toml and tell me the project name."):
        if event.type == "text":
            print(event.data["delta"], end="", flush=True)


asyncio.run(main())

Agent(...) infers the provider from the model id. No tools are registered unless you pass tools=[...].

For a simple synchronous call, use run():

result = agent.run("Read pyproject.toml and tell me the project name.")
print(result.text)

Multi-turn conversations

Call achat() or run() again on the same Agent — history accumulates automatically:

agent = Agent(model="claude-sonnet-4-6", api_key="...")

agent.run("What is 2 + 2?")
agent.run("Now multiply that by 10.")    # remembers the earlier answer

Saving sessions

Pass session_dir to persist the conversation to disk. Each session lives in a subdirectory named by session_id:

from pathlib import Path

agent = Agent(
    model="claude-sonnet-4-6",
    api_key="...",
    session_dir=Path("./chats"),
    session_id="my-chat",
)

Construct another Agent with the same (session_dir, session_id) later to resume the conversation — the history is loaded automatically.

Built-in tools

from mycode import read_tool, write_tool, edit_tool, bash_tool

Four tools for reading, writing, editing files, and running shell commands. Opt in by passing them to tools=[...].

Custom tools

Decorate any function with @tool. Parameter type hints become the JSON schema sent to the provider; the docstring becomes the description:

from mycode import Agent, tool


@tool
def greet(name: str) -> str:
    """Return a friendly greeting."""

    return f"hello, {name}"


agent = Agent(
    model="claude-sonnet-4-6",
    api_key="...",
    tools=[greet],
)

To call a built-in tool from inside your own, type the first parameter as ToolContext:

from mycode import ToolContext, tool


@tool
def summarize_file(ctx: ToolContext, path: str) -> str:
    """Return the first line of a text file."""

    result = ctx.read(path)
    return result.output.splitlines()[0] if result.output else ""

See docs/sdk.md for the event stream, cancellation, sessions, and the full Agent / @tool reference.

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

mycode_sdk-0.6.0.tar.gz (46.3 kB view details)

Uploaded Source

Built Distribution

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

mycode_sdk-0.6.0-py3-none-any.whl (54.2 kB view details)

Uploaded Python 3

File details

Details for the file mycode_sdk-0.6.0.tar.gz.

File metadata

  • Download URL: mycode_sdk-0.6.0.tar.gz
  • Upload date:
  • Size: 46.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for mycode_sdk-0.6.0.tar.gz
Algorithm Hash digest
SHA256 f71be36d7fa7ee02e61501b5b6785f12accfbc60b45a008e5081bd30e8f66719
MD5 b334be9745dab7a47350638a58c8543d
BLAKE2b-256 2d882fc53144fe7f0091ef8ed80b2c05da56e35f2aaa1cae9498138eb174c049

See more details on using hashes here.

File details

Details for the file mycode_sdk-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: mycode_sdk-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 54.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for mycode_sdk-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1a5eeb30745931505360e86bef7f7010c9ea907ac47069571a7d3ba45d2aef2d
MD5 d38741e70e5f1ce36aaf7103b24d9da7
BLAKE2b-256 01de25e69d1d68ae5c61e56fd09561ae765b2cce27c18eef7c4e10c22e3778cf

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