compass-a2a
Expose Compass through A2A.
compass-a2a is a thin A2A adapter in front of Compass.
It exists to keep a clean service boundary:
- Compass remains the source of truth for identity, data, and domain rules.
compass-a2aexposes an authenticated A2A surface for hub and peer agents.- The adapter can evolve independently without coupling external A2A clients to Compass internals.
What This Is
- An A2A server for Compass-oriented capabilities
- A public agent card plus JSON-RPC and HTTP+JSON A2A endpoints
- HTTP Basic authentication bridged to Compass account credentials
- A read-focused capability layer backed by Compass
/agentic/*exports
Quick Start
Install the released CLI with uv tool:
uv tool install compass-a2a
Upgrade later with:
uv tool upgrade compass-a2a
Then start compass-a2a against your Compass API:
A2A_HOST=0.0.0.0 \
A2A_PORT=8000 \
A2A_PUBLIC_URL=https://your-domain.example.com/compass-a2a \
A2A_COMPASS_API_BASE_URL=https://your-domain.example.com/api/v1 \
compass-a2a
A2A_COMPASS_API_BASE_URL should point to the upstream Compass API used for
login, token exchange, and capability dispatch.
Verify that the service is up:
curl http://127.0.0.1:8000/.well-known/agent-card.json
curl http://127.0.0.1:8000/healthz
Common runtime settings:
A2A_HOSTA2A_PORTA2A_PUBLIC_URLA2A_COMPASS_API_BASE_URL
Optional token cache tuning:
A2A_TOKEN_CACHE_TTL_SECONDSA2A_TOKEN_CACHE_REFRESH_SKEW_SECONDSA2A_TOKEN_CACHE_MAX_ENTRIES
Authentication
Inbound runtime access uses HTTP Basic authentication.
- The Basic Auth username and password are treated as Compass login credentials.
- The adapter does not maintain a separate user system.
- The authenticated Compass principal is reused for later Compass-facing calls.
- Compass-owned personalization such as locale or time zone stays on the Compass side.
Access tokens are cached in memory per authenticated user, with expiration, refresh skew, and cache size limits to avoid unbounded session growth.
Calling The Adapter
Recommended invocation style is metadata-driven:
{
"compass": {
"skill": "review_planning",
"arguments": {
"view_type": "day",
"selected_date": "2026-03-25T00:00:00Z",
"include_notes": true
}
}
}
For quick manual testing, slash-style read skill commands also work:
/review_time_and_activity {"start_date":"2026-03-25T00:00:00Z","end_date":"2026-03-25T23:59:59Z"}
Current contract rules:
metadata.compassmust be an object when provided- exactly one of
metadata.compass.skillormetadata.compass.commandmay be set metadata.compass.argumentsmust be a JSON object- slash-style read skill arguments must be a JSON object
- invalid capability contracts fail fast with an explicit adapter error
Plain text without metadata.compass.* or a slash-style command is accepted,
but it currently falls back to capability help text. The adapter does not yet
perform natural-language intent routing.
Current Read Skills
The current public skill surface is read-only:
review_time_and_activitysearch_personal_knowledgereview_planningreview_finance_statereview_vision_focus
Write commands keep a separate execution path for future approval-aware mutations, but no write commands are enabled yet.
Public Surface
Public endpoints:
GET /.well-known/agent-card.jsonGET /.well-known/agent.jsonGET /healthz
Protected endpoints:
POST /POST /v1/message:sendPOST /v1/message:streamGET /v1/card
The adapter advertises both JSONRPC and HTTP+JSON transports through the
agent card.
When To Use It
Use this project when:
- you want Compass capabilities exposed through a standard A2A surface
- you want authentication to remain anchored to Compass accounts
- you want a thin adapter instead of embedding A2A concerns inside Compass
Look elsewhere if:
- you need a free-form chat relay backed by Compass chat
- you need durable session storage or long-lived task orchestration
- you need approval-enabled write workflows today
- you want hard multi-tenant isolation inside one shared runtime
Development
Run local checks:
uv run pytest
uv run ruff check .
uv run ruff format --check .
Build and smoke test release artifacts locally:
uv build --no-sources
bash ./scripts/smoke_test_built_cli.sh dist/compass_a2a-*.whl
bash ./scripts/smoke_test_built_cli.sh dist/compass_a2a-*.tar.gz
Release
compass-a2a uses tag-driven releases:
- merge the release-ready commit into
master - create and push a version tag in the form
vX.Y.Z - publish only from tag commits reachable from
origin/master - let the publish workflow build, verify, and release the package
Metadata
Release files for compass-a2a 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| compass_a2a-0.1.2.tar.gz | 80.4 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| compass_a2a-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 96.8 kB
Release files / compass_a2a-0.1.2.tar.gz
| Download URL | compass_a2a-0.1.2.tar.gz |
|---|---|
| Size | 80.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
72ba2774d559cb62e12b5bad4d2b99b0a54758c253bfc2ab309f1485235d5ee9
|
|
BLAKE2b-256 checksum How to use checksums |
139ba4b60958cdf12e1fdc71d6a8ddc68d1afeb414ce7a1aa797f8d26c024771
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Mar 26, 2026.
Transparency logRelease files / compass_a2a-0.1.2-py3-none-any.whl
| Download URL | compass_a2a-0.1.2-py3-none-any.whl |
|---|---|
| Size | 16.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
adcda9d6bdfd15b5b8229c427205ce3f84041ab26d299af3a7cde85779d0af36
|
|
BLAKE2b-256 checksum How to use checksums |
a11432177f6b60b6447f033a4773591402a7b5d6198df25b35f48f7d8c7abc88
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Mar 26, 2026.
Transparency logSecurity for compass-a2a 0.1.2
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for compass_a2a-0.1.2.tar.gz
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 Mar 26, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.