Skyportal SRE – an open-source AI infrastructure engineer Skyportal released an open-source Python SDK and persistent terminal client for its AI infrastructure platform, enabling developers to interact with the SkyPortal API for tasks such as monitoring training nodes and managing server-side agents. The SDK, available under an alpha release, includes features like chat-based agent interaction, approval workflows, and observability endpoints, with support for self-hosted deployments. The official Python SDK and persistent terminal client for the SkyPortal https://skyportal.ai API. Project status:Alpha. APIs may evolve before 1.0; changes are documented in GitHub releases. User app → skyportalai SDK → SkyPortal HTTP API pip install skyportalai or poetry add skyportalai Requires Python 3.11+. The local observability agent has one additional dependency set: pip install "skyportalai agent " python from skyportalai import Skyportal client = Skyportal api key="sk-..." or set SKYPORTAL API KEY user = client.me print user.name Skyportal can be used as a context manager when the SDK owns the HTTP session: with Skyportal api key="sk-..." as client: print client.me .name client.chat wraps the headless agent API: create a chat, poll it, resolve approvals, and read the run's messages — the agent itself runs server-side. chat = client.chat.create chat "check disk usage on the training node", server id=12 Poll until the agent settles; approve any command it asks to run. status = chat.wait on approval=lambda a: True True approves, False rejects print status.status "idle" for m in chat.messages .messages: print f"{m.role}: {m.content}" Without an on approval callback, wait returns as soon as the agent needs a decision, and you resolve it yourself: status = chat.wait if status.status == "awaiting approval": for approval in status.pending approvals: print "agent wants to run:", approval.command chat.approve approval.approval id, command=approval.command status = chat.wait Follow-ups go through chat.send "..." ; chat.cancel stops an active run. Read-only introspection mirrors the observability endpoints: chat.events , chat.tool calls , chat.reasoning , chat.plans , chat.evaluations , chat.environment . wait raises WaitTimeoutError if the agent is still busy past timeout default 300s . | Argument | Env var | Default | Notes | |---|---|---|---| api key | SKYPORTAL API KEY | — | required; sent as Authorization: Bearer