Isodrome Python SDK and CLI
isodrome is the official Python package for Isodrome, and installs the iso command line.
Install
pipx install isodrome # or: uv tool install isodrome, or pip install isodrome
Getting started
iso login # signs in with your browser and saves a key
iso feed create weather # events are timed when they arrive
iso feed push weather --data '{"temperature": 18.5, "city": "Dublin"}'
iso feed query weather --since 1h
iso feed tail weather # the last 10 events, then new ones live
Events are JSON objects. A feed times each event when it arrives, unless created with
--time-field FIELD to use a time carried in the events (needed for late data and meaningful
as-of queries), and with --key FIELD keeps the newest event per key for iso feed latest. iso feed push reads --data, --file (JSON Lines, a
JSON array, or one object) or standard input, and prints every rejected event and why. Pushing
the same file twice is recognised and not written twice (within the server's 15-minute window).
Commands
| Command | What it does |
|---|---|
iso login / logout |
sign in with the browser (or --api-key); logout revokes the key |
iso whoami, iso server, iso --version |
your identity; the server's version and limits |
iso namespace create / list / delete / use |
namespaces; use sets the one commands act on |
iso key create / list / revoke |
API keys for scripts and services (personal by default); your sessions |
iso feed create / list / show / describe / update |
feeds; describe shows how to send and query |
iso feed delete / undelete / errors |
soft deletion (7 days to undo); recent rejections |
iso feed push / query / tail / latest |
send and read events; -o table|json|csv |
iso <command> --help describes each one.
Configuration and profiles
iso keeps its settings in ~/.config/isodrome/config.toml (mode 0600, as it holds API keys).
Each profile has an endpoint, a key and a namespace; iso login signs in to the cloud
(https://stg.api.isodrome.ai for now). A local server has no browser sign-in, so give it its key:
iso --profile local login --endpoint http://localhost:7470 --api-key iso_...
iso profile use local # or pass --profile local per command
ISODROME_PROFILE, ISODROME_ENDPOINT and ISODROME_API_KEY override the configuration.
Development
python -m venv .venv && . .venv/bin/activate
pip install -e '.[dev]'
pytest # unit tests, against an in-process fake server
The API client in src/isodrome/v1 is generated from proto/isodrome/v1/isodrome.proto,
a copy of the server's. After the server's API changes, with isodrome-server checked out next
to this repository (or ISODROME_SERVER=path):
scripts/sync_proto.sh # copy the proto and regenerate
scripts/sync_proto.sh --check # what CI runs: fails if either is out of date
End-to-end tests run the CLI against a real server:
docker compose -f tests/e2e/docker-compose.yml up -d --wait # ISODROME_SERVER_IMAGE=… for another image
ISODROME_E2E_ENDPOINT=http://localhost:7470 pytest -m e2e tests/e2e
Releases: publishing a GitHub release builds the package and uploads it to PyPI.
Metadata
Release files for isodrome 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| isodrome-0.1.0.tar.gz | 52.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| isodrome-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 94.0 kB
Release files / isodrome-0.1.0.tar.gz
| Download URL | isodrome-0.1.0.tar.gz |
|---|---|
| Size | 52.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
efeebb0a4187a6f5831d8795c9d469ee7e60ac42574664cf69420f4ad6420381
|
|
BLAKE2b-256 checksum How to use checksums |
ed1f98901954cdd4a8b8e80c5f5f9d008b0a35611dc9493c83cbbaff1839e0d8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.
Transparency logRelease files / isodrome-0.1.0-py3-none-any.whl
| Download URL | isodrome-0.1.0-py3-none-any.whl |
|---|---|
| Size | 41.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e61fdd9bd51ad5f1c478a489ad29bea9132b82fea40c279220c7e3bc9b664b73
|
|
BLAKE2b-256 checksum How to use checksums |
49c443705fc2badf4a455537c2cbe6dd939ed80984db856134b16d54a1187c40
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.
Transparency log