Observed since 20 Oct, 23:23 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
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.
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()))
/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.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-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.
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
agentship-coreEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.13",
"evaluation": "NOT_EVALUATED"
} | agentship-core==0.0.4 | runtime |
fastapiEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.13",
"evaluation": "NOT_EVALUATED"
} | fastapi>=0.115 | runtime |
sse-starletteEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.13",
"evaluation": "NOT_EVALUATED"
} | sse-starlette>=2.1 | runtime |
a2a-sdkEnvironment{
"extras": "",
"marker": "extra == \"a2a\"",
"requires_python": ">=3.13",
"evaluation": "NOT_EVALUATED"
} | a2a-sdk<2,>=1.1; extra == "a2a" | runtime |
uvicornEnvironment{
"extras": "standard",
"marker": "extra == \"serve\"",
"requires_python": ">=3.13",
"evaluation": "NOT_EVALUATED"
} | uvicorn[standard]>=0.30; extra == "serve" | runtime |
bdist_wheel · 72.14 KB · Python py3
sdist · 82.7 KB · Python source
Observed since 20 Oct, 23:23 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:3baa300627353d8ca4671fe48dacddf2f22c7103c080c81f6bb4eb65bd90d72a