Python client for the Dejima API — run a fleet of AI coding agents on hardware you own.
Project description
dejima — Python client
Thin Python client for the Dejima API: run a fleet of AI coding agents on hardware you own.
Alpha (0.x). The API is stable in shape (
v1/-prefixed) but fields may change until1.0. This client is hand-written over the REST surface and mirrorsopenapi.yaml; the only non-generated piece is the PTYSessionhelper.
Install
pip install dejima-sdk # REST client
pip install 'dejima[ws]' # + WebSocket PTY attach()
Quickstart
from dejima import Client
# host/token from $DEJIMA_HOST and $DEJIMA_TOKEN, or pass explicitly:
dj = Client(host="100.84.12.7:7273")
isl = dj.create_island(repo="git@github.com:you/foo.git", agent="claude-code")
print(isl["name"], isl["state"])
# add a second agent on its own worktree
dj.add_agent(isl["name"], type="codex")
# one-shot command
out = dj.exec(isl["name"], ["git", "status", "--short"])
print(out["stdout"], "exit", out["exit_code"])
# fleet view
for i in dj.list_islands():
print(i["name"], i["state"], len(i.get("agents", [])), "agents")
print(dj.overview()) # daemon health, VM memory, rollup
Interactive sessions
attach() opens the multi-attach PTY stream (needs the ws extra). The daemon
speaks a small JSON-envelope protocol over the WebSocket — Session hides that,
so you deal in raw bytes:
with dj.attach(isl["name"]) as s: # or agent="p2"
s.resize(40, 120)
s.send(b"ls -la\n")
print(s.recv()) # bytes of PTY output, or None when closed
dj.attach_terminal("t1") does the same for an operator host terminal.
API coverage
The client covers the full v1 surface:
- Islands — list/create/get/update/delete, hibernate/wake/reset/upgrade, clone, resources, workspace-ready, events.
- Agents — list/add/get/update/remove, configure (provider/model).
- Exec & files — exec, file read/write, logs.
- Port broker — scopes (list/grant/revoke), intake/export/write.
- Capability broker — grants (list/grant/revoke), execute.
- MCP broker — grants (list/grant/revoke),
mcp_call. - Credentials — Claude push/status, GitHub identities + repos, LLM providers.
- Operator tokens — create/list/revoke (owner-only; role + island scope).
- Events — webhook subscribe/list/unsubscribe.
- Activity — team activity feed (
activity, filterable). - Daemon — overview, agent-types, healthz, audit (filters + jsonl/csv export), clients, sessions-revoke, panic, admin-update, image-build, SSH account keys.
- Host terminals — list/create/delete/relabel +
attach_terminal. - Sessions —
attach/attach_terminal(PTY) andsession_url.
Every non-2xx response raises dejima.DejimaError (.status, .message).
Auth
- Operator (unix socket / tailnet) needs no token.
- Autonomy path (an agent driving its own/child islands) uses a per-island
bearer token — set
DEJIMA_TOKENor passtoken=.
Development
pip install -e '.[dev]'
pytest
Tests run against a stdlib http.server stub — no running daemon required.
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 dejima_sdk-0.6.6.tar.gz.
File metadata
- Download URL: dejima_sdk-0.6.6.tar.gz
- Upload date:
- Size: 13.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fcd438e08c4b2bae718f3243c7c7e13dd6af58af2ed44502a0c41de70a799f52
|
|
| MD5 |
42956bef666d7bacb1a890af17d23057
|
|
| BLAKE2b-256 |
75cb0c0024d3031a124e0f9b54308bf13e708dd107344b6e1762e071d38b3858
|
File details
Details for the file dejima_sdk-0.6.6-py3-none-any.whl.
File metadata
- Download URL: dejima_sdk-0.6.6-py3-none-any.whl
- Upload date:
- Size: 11.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
641e4668bdcdc34f125eab3bae411261b801fec9fae3625403eb358b992bd553
|
|
| MD5 |
74aa4d16a1866e68356af0891bb32b86
|
|
| BLAKE2b-256 |
36e4c166a95dd02b506995679e22346e65b229aa7620a4c7e97def6f76bb9171
|