docs(hub): agent publishing guide + standalone-sidecar example fixes#1713
Conversation
…e sidecars Adds a step-by-step guide for building, versioning, publishing, and updating a hub-installable agent: scaffold → manifest → implement → README → auth → publish → verify, plus the two publish paths (contribute via PR with no token; direct `gaia agent publish` with a scoped token), the README→catalog-page contract, immutability/versioning, and troubleshooting. Points contributors at the existing copy-paste examples (hello-world → word-count → doc-search). Also fixes the example agents to back the interfaces they declare: they advertise api_server/mcp_server but depended on bare `amd-gaia`, so a standalone `pip install` lacked fastapi/uvicorn and couldn't serve them. Pin `amd-gaia[api]` (hello-world, word-count) and `amd-gaia[api,rag]` (doc-search, which composes RAGToolsMixin and was under-declared) — mirroring the email agent's packaging — so each example runs as a standalone REST/MCP sidecar.
SummarySolid, well-grounded docs PR — the example-agent dependency fix is correct and the new publishing guide is comprehensive and mostly accurate. The one thing to fix before merge: the guide tells users to install agents with I verified the core fix against the codebase: all three example manifests ( Issues Found🟡
|
Rewrites the guide to assume no packaging background: plain-language explanations of what the Hub is, the four parts of an agent package, the entry point / build_registration (how GAIA discovers an installed agent), wheels, tokens, sidecars, SemVer, and immutability — each explained where it first appears. Corrections found checking against the codebase: - `gaia agent init` parent-dir flag is `--output`/`-o`, not `--dir`. - The website redeploy is NOT automatic for a generic publish (only the email release workflow triggers deploy_website.yml) — reworded honestly. - Path 1 (PR) doesn't auto-publish arbitrary agents yet — "a maintainer publishes it for you," not "the release pipeline publishes it." Adds the guidelines that were missing: when to bump PATCH/MINOR/MAJOR, the discovery mechanism, and a "standalone sidecars" section (the [api] extra + the email npm-sidecar pattern). Consolidates the repeated author/tier/token notes.
|
🟡 The three example agents had their These are reference agents that contributors copy. If the catalog exports Fix — update each manifest to match # hello-world/gaia-agent.yaml and word-count/gaia-agent.yaml
python:
dependencies:
- "amd-gaia[api]>=0.20.0"
# doc-search/gaia-agent.yaml
python:
dependencies:
- "amd-gaia[api,rag]>=0.20.0" |
The external-URL doc check failed on two links: - amd-gaia.ai/hub (404): the Hub website page exists in the repo but isn't deployed to amd-gaia.ai yet, so the live URL 404s. Reference it as inline code instead of a clickable link that breaks today — matching how amd-gaia.ai/hub/<id> is already written later in the guide. - support.microsoft.com (400): intermittently rejects datacenter IPs. Skip-list it alongside the other known bot-blockers (npmjs, openai).
|
🟡 This PR bumped three
But the corresponding python:
dependencies:
- "amd-gaia>=0.20.0"This matters because the new guide ( Suggested fix for And for |
- gaia agent install <id> does not exist: the dispatch map has no install action. Point users at the real paths — pip install gaia-agent-<id> or the Agent UI Hub panel — in the intro and Step 9. - gaia agent test defaults to --lint (static gates), not pytest; reword the Step 7 comment and add the --live hint. - Manifest validation: manifest.schema.json is the Hub's server-side aggregate (requires versions/latest_version an author never writes). Direct authors to 'gaia agent test --lint' for local validation. - Sync the three example gaia-agent.yaml manifests with their pyproject.toml extras ([api] / [api,rag]) so copied references aren't under-declared. - Tighten the pyproject comment: the stdio MCP server is built-in; the mcp package itself is the [mcp] extra, only keyring is core.
gaia agent version <bump> rewrites gaia-agent.yaml AND auto-syncs pyproject.toml + the package __init__.py; only non-Python siblings (e.g. npm package.json) need a manual update.
Why this matters
Contributors had no end-to-end guide for getting an agent into the Agent Hub, and the copy-paste example agents (
hello-world/word-count/doc-search) declaredapi_server/mcp_serverinterfaces they couldn't actually serve on a standalonepip install— they pinned bareamd-gaia, which lacks fastapi/uvicorn. This adds the guide and fixes the examples so "copy an example → publish a working sidecar" actually holds.docs/guides/hub-publishing.mdx): scaffold → manifest reference → implement → README → auth →gaia agent publish→ verify, plus updating an existing agent (version bump + immutability), the two publish paths (contribute-via-PR with no token vs. direct publish with a scoped token — self-publishing deliberately gated until the hub builds momentum), how the website auto-populates from the manifest + README, and a troubleshooting table. Grounded entirely in the realgaia agentCLI andmanifest.schema.json.amd-gaia[api](hello-world, word-count) andamd-gaia[api,rag](doc-search — it composesRAGToolsMixinand was under-declared, so it couldn't index/retrieve on a bare install). Mirrors the email agent's packaging so the declared sidecar interfaces work standalone. (mcp/keyringare already core, so[api]is sufficient — matching email.)Test plan
docs.jsonis valid JSON (verified locally).pip install "hub/agents/python/doc-search"resolves the RAG deps;gaia apiserveshello-world/word-countfrom a standalone install.gaia agent init|version|test|pack|publish|login|status|health|install) — cross-checked againstsrc/gaia/cli_agent.py.