Skip to main content

Python SDK for the ArchAstro Platform API

Project description

ArchAstro Python SDK

Python SDK for the ArchAstro Platform API and ArchAgents runtime APIs.

uv add archastro-sdk
# or
pip install archastro-sdk

The clients default to the production API gateway, https://platform.archastro.ai. Set ARCHASTRO_PLATFORM_BASE_URL only when targeting local development, staging, or another non-production environment.

Getting Started

Choose the auth path that matches how your Python process should run.

ArchAgents Org Bot or Worker

Use this path for ArchAgents bots, background workers, cron jobs, ingestion jobs, and integrations that should act as an org-owned system user. Your Python process only needs a system-user access token:

export ARCHASTRO_ACCESS_TOKEN=sat_...

Create that token with archagent while logged in as an org admin. Replace user@company.com with your ArchAgents login email. The setup is grouped as one shell block so GitHub's copy button copies the full sequence:

archagent auth login user@company.com

export ARCHASTRO_ORG_ID="$(
  archagent describe me --json |
  jq -er '.session.org'
)"

export ARCHASTRO_SYSTEM_USER_ID="$(
  archagent --json create user \
    --system-user \
    --name "Python SDK Bot" \
    --org "$ARCHASTRO_ORG_ID" \
    --org-role member |
  jq -r '.id'
)"

export ARCHASTRO_ACCESS_TOKEN="$(
  archagent --json create usertoken \
    --user "$ARCHASTRO_SYSTEM_USER_ID" \
    --name "python-sdk-service" |
  jq -r '.token'
)"

Use the sync client for scripts and CLIs:

import os

from archastro.platform import PlatformClient

with PlatformClient(access_token=os.environ["ARCHASTRO_ACCESS_TOKEN"]) as client:
    user = client.users.me()

print(user["id"], user.get("is_system_user"))

Use the async client inside async services or workers:

import asyncio
import os

from archastro.platform import AsyncPlatformClient


async def main() -> None:
    async with AsyncPlatformClient(
        access_token=os.environ["ARCHASTRO_ACCESS_TOKEN"],
    ) as client:
        user = await client.users.me()

    print(user["id"], user.get("is_system_user"))


asyncio.run(main())

See examples/org_system_user_token for the complete system-user walkthrough.

Developer App Auth

Use this path when you already have a publishable API key and a user access token from a developer app login flow.

export ARCHASTRO_API_KEY=pk_...
export ARCHASTRO_ACCESS_TOKEN=sat_...
import os

from archastro.platform import PlatformClient

client = PlatformClient.with_token(
    os.environ["ARCHASTRO_API_KEY"],
    os.environ["ARCHASTRO_ACCESS_TOKEN"],
)

with client:
    teams = client.teams.list()

Async setup uses the same factory:

import asyncio
import os

from archastro.platform import AsyncPlatformClient


async def main() -> None:
    async with AsyncPlatformClient.with_token(
        os.environ["ARCHASTRO_API_KEY"],
        os.environ["ARCHASTRO_ACCESS_TOKEN"],
    ) as client:
        teams = await client.teams.list()
        print(teams)


asyncio.run(main())

Examples

Packages

All public code lives under the single top-level archastro package:

  • archastro.platform — typed REST + channel SDK generated from the canonical OpenAPI spec at ArchAstro/archastro-openapi. Pydantic models, async channel classes, auth helpers.
  • archastro.phx_channel — the hand-written Phoenix Channels client the generated channel classes run on top of. WebSocket transport, join / reply / push / leave, heartbeat, reconnect, and a HarnessServiceClient for driving the @archastro/channel-harness service from Python tests.

Development

This repo contains:

  • Python SDK (src/archastro/) installed via uv
  • JS tooling (package.json) — the channel-harness subprocess that powers the channel contract tests, plus the Prism mock server that backs the REST contract tests. Installed via npm ci.

Setup

npm ci --ignore-scripts  # channel-harness + prism (for contract tests)
uv sync --locked --all-extras

Running tests

# Unit tests only (no external services needed)
uv run pytest tests/test_http_client.py src/archastro/phx_channel/tests/test_unit.py

# Example smoke/unit tests
uv run pytest tests/examples

# REST contract tests (spawns Prism mock server)
uv run pytest tests/contract

# REST + channel contract tests (also spawns channel-harness subprocess)
ARCHASTRO_RUN_CHANNEL_CONTRACT_TESTS=1 uv run pytest tests/contract

Regenerating the SDK

The typed SDK — src/archastro/platform/ and tests/contract/ — is regenerated from the canonical OpenAPI spec by @archastro/sdk-generator. Don't hand-edit files with the auto-generated by @archastro/sdk-generator header; they'll be overwritten.

./scripts/regenerate_sdk.sh

The script fetches the spec from ArchAstro/archastro-openapi@main and runs the generator locked in package-lock.json. Knobs:

  • ARCHASTRO_OPENAPI_REF=some-branch ./scripts/regenerate_sdk.sh — pull the spec from a non-default ref (useful when a spec change is on a branch awaiting merge).

After regenerating, review the diff, run the full test suite, and commit.

Release

# bump version in pyproject.toml, then:
uv sync --locked --all-extras
uv build --no-build-isolation
uv publish

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

archastro_sdk-0.2.0.tar.gz (281.6 kB view details)

Uploaded Source

Built Distribution

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

archastro_sdk-0.2.0-py3-none-any.whl (104.3 kB view details)

Uploaded Python 3

File details

Details for the file archastro_sdk-0.2.0.tar.gz.

File metadata

  • Download URL: archastro_sdk-0.2.0.tar.gz
  • Upload date:
  • Size: 281.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for archastro_sdk-0.2.0.tar.gz
Algorithm Hash digest
SHA256 1a75fa74b558c19761ad0e85fa3831f8134bc065d4ed89524bc49b48e874d3a7
MD5 f03ae2b4c1a33ae7c445648f0aa66fe5
BLAKE2b-256 2fcbf9763275e89b34b1d1ed8cc3b1c2eb62a9a776d55082a736f90fd8ab7758

See more details on using hashes here.

Provenance

The following attestation bundles were made for archastro_sdk-0.2.0.tar.gz:

Publisher: publish.yml on ArchAstro/archastro-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file archastro_sdk-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: archastro_sdk-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 104.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for archastro_sdk-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0bc436bcd870e022adae93cee0aac445d3fdefb5af7644ce0ee0c3ecfce24e88
MD5 86f55733141f699158c04bf45d91ed6e
BLAKE2b-256 93ea250bbbe8106396f0d8575a46f5e68f085b538eb455299ba195785146c172

See more details on using hashes here.

Provenance

The following attestation bundles were made for archastro_sdk-0.2.0-py3-none-any.whl:

Publisher: publish.yml on ArchAstro/archastro-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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