Skip to main content

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 / update / delete / use namespaces; update --public publishes one to every organization; use sets the one commands act on
iso feed create / list / show / describe / update feeds (list: yours in every namespace, and other organizations' public ones); 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 key create / list / revoke API keys (personal by default, or for a service account); your sessions
iso service-account create / list / delete identities for software (CI, services), with keys of their own
iso connector templates, iso connection create / list / show / pause / resume / delete Isodrome-run downloaders that fill feeds from outside sources

iso <command> --help describes each one.

Feeds from other organizations

A feed is named FEED (in the namespace in use), NAMESPACE/FEED, or ORGANIZATION/NAMESPACE/FEED. The last form reaches another organization's public feeds, such as Isodrome's open data, which any signed-in user can read but only their publisher can change:

iso feed list                                              # yours, then public ones from others
iso feed show isodrome/public/met_eireann_point_forecast   # with its source, licence and attribution
iso feed latest isodrome/public/met_eireann_point_forecast -c location -c temperature.value
iso namespace use isodrome/public                          # then refer to its feeds by name alone

When a feed's source asks for credit, iso prints the attribution (on stderr) with the data.

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
export ISODROME_E2E_OTHER_KEY=$(docker compose -f tests/e2e/docker-compose.yml exec -T isodrome-server \
  isodrome-server create-organization other | awk '/admin key:/ {print $3}')   # for the public-feed test
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.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for isodrome 0.2.0
File Size Uploaded
isodrome-0.2.0.tar.gz 66.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for isodrome 0.2.0
File Interpreter ABI Platform
isodrome-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 117.6 kB

Release files / isodrome-0.2.0.tar.gz

Download URL isodrome-0.2.0.tar.gz
Size 66.0 kB
Tags Source
SHA-256 checksum
How to use checksums
fae3119322659498f8d82c461146b2bec0766f1122f9540ebb94b7e94e218ffb
BLAKE2b-256 checksum
How to use checksums
b1f286b9cb554b0eab58164cc93be2babf0216d14586ae05f88f9d080b5de104
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 15, 2026.

Transparency log

Release files / isodrome-0.2.0-py3-none-any.whl

Download URL isodrome-0.2.0-py3-none-any.whl
Size 51.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
50411b56cc10caac02ea1119d16f1ccbee7204c9a258f5522d96cbb0dcb96df1
BLAKE2b-256 checksum
How to use checksums
20e5f6e90090a870b8ae926de38653113865aadb2d4c9b9e711cee5579182422
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 15, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page