Catalog PyPI
Back to packageRELEASE DETAILS

0.0.4

PyPI

agentship-service

AgentShip runtime service — the REST/SSE/WS surface over an agent, with pluggable auth adapters and tenant isolation. The irreducible in-app core a gateway cannot replace.

Published11 Oct 2026
Direct dependencies5
Transitive dependenciesNot calculated

README

Version 0.0.4 documentation

agentship-service

The AgentShip runtime service — the REST / SSE / WebSocket surface that turns a built agent into an HTTP API, with pluggable authentication adapters and, above all, tenant isolation.

This is the part of the stack a gateway cannot replace. A gateway (agentgateway) routes requests and can authenticate them at the edge; but only the app can guarantee that every stored read and write is scoped to the authenticated tenant. That guarantee lives here.

from agentship.auth import ApiKeyAuthProvider, EnvApiKeyStore
from agentship_service import create_app

app = create_app(auth=ApiKeyAuthProvider(EnvApiKeyStore()))

Integrations (we wire, we don't reinvent)

  • Streaming — /v1 …:stream and A2A message/stream frame Server-Sent Events with sse-starlette's EventSourceResponse, which owns the wire encoding, keepalive comments, and client-disconnect cancellation. We only shape each StreamEvent into its event/data fields.
  • Auth — agentship.auth ships pluggable providers; the optional OIDC path (JwtAuthProvider) delegates JWKS fetching, key-id resolution, and rotation to PyJWT's PyJWKClient. Tenant isolation on every read/write is the part that stays here.
  • A2A — we speak the protocol with our own thin Pydantic wire models rather than pull in the protobuf-first a2a-sdk. A drift guard under the agentship-service[a2a] extra (tests/test_a2a_conformance.py) validates every AgentCard / Message / status frame against a2a-sdk's own schema, so we cannot drift from the spec. See docs/decisions/0001-integrate-not-invent.md.

See agentship serve for the one-command server, and the phase-04 spec for the full endpoint contract.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 5

Native requirements
5 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
agentship-core
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.13",
  "evaluation": "NOT_EVALUATED"
}
agentship-core==0.0.4runtime
fastapi
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.13",
  "evaluation": "NOT_EVALUATED"
}
fastapi>=0.115runtime
sse-starlette
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.13",
  "evaluation": "NOT_EVALUATED"
}
sse-starlette>=2.1runtime
a2a-sdk
Environment
{
  "extras": "",
  "marker": "extra == \"a2a\"",
  "requires_python": ">=3.13",
  "evaluation": "NOT_EVALUATED"
}
a2a-sdk<2,>=1.1; extra == "a2a"runtime
uvicorn
Environment
{
  "extras": "standard",
  "marker": "extra == \"serve\"",
  "requires_python": ">=3.13",
  "evaluation": "NOT_EVALUATED"
}
uvicorn[standard]>=0.30; extra == "serve"runtime

Distribution files

2 collected
agentship_service-0.0.4-py3-none-any.whl

bdist_wheel · 72.14 KB · Python py3

Source file
agentship_service-0.0.4.tar.gz

sdist · 82.7 KB · Python source

Source file

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 23:23 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:3baa300627353d8ca4671fe48dacddf2f22c7103c080c81f6bb4eb65bd90d72a

Other collected versions

View all collected versions →