Skip to main content

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 until 1.0. This client is hand-written over the REST surface and mirrors openapi.yaml; the only non-generated piece is the PTY Session helper.

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.
  • Sessionsattach / attach_terminal (PTY) and session_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_TOKEN or pass token=.

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

dejima_sdk-0.8.38.tar.gz (13.9 kB view details)

Uploaded Source

Built Distribution

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

dejima_sdk-0.8.38-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file dejima_sdk-0.8.38.tar.gz.

File metadata

  • Download URL: dejima_sdk-0.8.38.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

Hashes for dejima_sdk-0.8.38.tar.gz
Algorithm Hash digest
SHA256 75d67b69a33dcc1e63d75eb3f4bb1c28f18c306c53972d5313b88505efbfcc68
MD5 5a8fc4aff6308180091d3b318c5c4e9a
BLAKE2b-256 3b7a02ffe0708894cbdcff6257ba396375a090102338f8aab299aaac4b1cd095

See more details on using hashes here.

File details

Details for the file dejima_sdk-0.8.38-py3-none-any.whl.

File metadata

  • Download URL: dejima_sdk-0.8.38-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

Hashes for dejima_sdk-0.8.38-py3-none-any.whl
Algorithm Hash digest
SHA256 653488e8472eb9ccfcccbd4d132539b281d924eb2a3076d2023187c2a9a5d432
MD5 49568b0337ec157a5a85023b49bf3ef8
BLAKE2b-256 8ee1848e449f7378ada022d6220fa2d795b88ce87c366d0fce2b2ca0d4529160

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