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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f71be36d7fa7ee02e61501b5b6785f12accfbc60b45a008e5081bd30e8f66719
|
|
| MD5 |
b334be9745dab7a47350638a58c8543d
|
|
| BLAKE2b-256 |
2d882fc53144fe7f0091ef8ed80b2c05da56e35f2aaa1cae9498138eb174c049
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a5eeb30745931505360e86bef7f7010c9ea907ac47069571a7d3ba45d2aef2d
|
|
| MD5 |
d38741e70e5f1ce36aaf7103b24d9da7
|
|
| BLAKE2b-256 |
01de25e69d1d68ae5c61e56fd09561ae765b2cce27c18eef7c4e10c22e3778cf
|