Publishing metadata to the agent index makes your agent discoverable in the AgentSystems platform. The index contains metadata only - your actual agent image can be public or private. Metadata submissions are automatically validated and merged.
Prerequisites
- GitHub account with commit signing enabled (Setup Guide)
- Agent deployed (see Quickstart)
- 5 minutes
Commit Signing Required: All commits in your PR must be signed with a verified GPG or SSH key. Unverified commits will be rejected by the auto-merge workflow. This requirement helps verify that commits are cryptographically signed and match the author identity.
Overview
The agent-index repository is an open-source, Git-based registry for agent metadata enabling federated discovery. Instead of a centralized API:- Developers manage their own YAML files in
developers/your-github-username/ - Pull requests are automatically validated and merged—no manual approval needed
- Metadata is published to
https://agentsystems.github.io/agent-index/ - The AgentSystems UI consumes this index (and can connect to multiple indexes)
- Anyone can fork the repository and run their own independent index
Step 1: Fork the Repository
Go to github.com/agentsystems/agent-index and click “Fork”. Clone your fork:Step 2: Create Your Developer Profile
Create your developer folder (must match your GitHub username):developers/your-github-username/profile.yaml:
Complete Developer Profile Schema
Complete Developer Profile Schema
Required:
name(string): Display namedeveloper(string): Developer namespace - must match folder name
type(string): “individual”, “organization”, “company”, or “enterprise”avatar_url(string): Profile image URLbio(string): Short biographytagline(string): Short tagline or slogancompany(string): Company namelocation(string): Geographic locationyears_experience(integer): Years in AI/MLwebsite(string): Your website URLsupport_email(string): Support emaildocumentation_url(string): Docs URLtwitter_handle(string): Twitter/X handle (without @)linkedin_url(string): LinkedIn profilediscord_username(string): Discord usernameexpertise(array): Areas of expertisefeatured_work(array): URLs to featured projectsopen_to_collaboration(boolean): Open to collaborationsponsor_url(string): GitHub Sponsors or similar
Step 3: Add Your Agent Metadata
Create the agents folder:Publishing from agent-template: If you built an agent using agent-template, copy your files to create the index structure:
-
Copy
agent.yamlfrom your agent →developers/your-github-username/agents/your-agent/agent.yaml -
Copy
metadata.yamlfrom your agent →developers/your-github-username/agents/your-agent/0.1.0.yaml(rename to match version) -
Create
versions.yamlwith:
agent.yaml - Set your agent identity:
developer- Must match your GitHub usernamename- Must match directory namedescription,container_image,tags,capabilities- See examples folder for all fields
versions.yaml - Set version management:
latest_version: "0.1.0"listed_versions:with- "0.1.0"(use dash notation)
0.1.0.yaml - Set version-specific attributes:
version- Must match filename (“0.1.0”)model_dependencies:with- gemma3:1b(use dash notation)readiness_level,input_schema,facets- See examples folder for all fields
See
examples/agents/demo-agent/ in the repository for complete examples of all three files with all available fields and documentation.Complete Agent Metadata Schema
Complete Agent Metadata Schema
Required in agent.yaml (Agent Identity):
name(string): Agent name (lowercase, alphanumeric, hyphens)developer(string): Your GitHub username (must match folder name)description(string): Short descriptioncontainer_image(string): Container image reference without tag (e.g., docker.io/user/agent)
source_repository_url(string): Source code URLprimary_function(string): Primary function categorytags(array): Searchable tagscapabilities(array): High-level capability descriptions
latest_version(string): Latest version (must match an existing .yaml file)listed_versions(array): Versions visible in discovery (each must match an existing .yaml file)
version(string): Semantic version (e.g., “0.1.0” or “1.0.0-beta.1”), used as container image tagmodel_dependencies(array): Required AI models (at least one)
readiness_level(string): “experimental”, “beta”, “production”, or “deprecated”container_image_access(string): “public” or “private”source_repository_access(string): “public” or “private”required_egress(array): Required network egress URLsrequired_integrations(array): Required external integrationsinput_types(array): Supported input data typesoutput_types(array): Supported output data typesinput_schema(object): Input parameter schemafacets(object): Behavioral characteristics and categorizationcontext(string): Operating context (personal, professional, general)autonomy(string): Autonomy level (Assist, Co-pilot, Auto-pilot)latency(string): Latency profile (real-time, interactive, batch)cost_profile(string): Cost model (free, /month)modalities(array): Supported modalities (text, image, audio, video)domains(array): Application domainsmodel_tooling(array): Model frameworks (LLM, RAG, fine-tuned, embeddings)industries(array): Target industriesintegrations(array): Supported integrations
release_notes(string): Markdown-formatted release notes
- agent-identity.schema.json - agent.yaml
- versions.schema.json - versions.yaml
- agent-version.schema.json - .yaml
Step 4: Validate Locally (Optional)
Validation runs automatically on your PR, but testing locally helps catch issues early.
Step 5: Submit Pull Request
Commit and push:What Happens Next
Your PR triggers automated workflows:- Policy Gate: Validates folder ownership (checks your GitHub username matches folder name)
- YAML Validation: Checks syntax and schema compliance
- Auto-Merge: If all checks pass, PR is automatically approved and merged
- Build & Deploy: Index is rebuilt and published to GitHub Pages
https://agentsystems.github.io/agent-index/ shortly after the build completes.
Publishing New Versions
To publish a new version of your agent:- Create a new version file in your agent directory:
-
Edit the new version file:
- Update
version: "0.2.0"(must match filename) - Modify any behavioral changes (model, facets, schema, etc.)
- Add release notes
- Update
-
Update versions.yaml:
- Change
latest_version: "0.1.0"tolatest_version: "0.2.0" - Add
"0.2.0"tolisted_versionsarray - Optionally remove old versions from
listed_versionsto hide them
- Change
- Commit and push:
Updating Agent Identity
To update your agent’s identity (description, tags, capabilities):- Edit
developers/your-github-username/agents/your-agent/agent.yaml - Commit and push to your fork
- Open a new pull request
- Auto-merge handles the rest
Security Model
The index uses fork-based ownership:- ✅ Only you can modify
developers/your-github-username/(checked via fork ownership) - ✅ PRs touching only your folder auto-merge
- ✅ PRs touching core files require maintainer approval
- ✅ Multiple validation layers protect the index
Troubleshooting
PR not auto-merging
Check:- All files are in
developers/your-github-username/(folder name must match your GitHub username exactly) - YAML validation passes (check the workflow logs)
- You’re submitting from a fork (not a branch in the main repo)
- All commits are signed and verified (see below)
YAML validation fails
Common issues:- Syntax error: Check YAML indentation (use spaces, not tabs)
- Missing required field: Ensure
name,developer(in profile.yaml),version,description, andmodel_dependenciesare present - Invalid value: Check enum fields like
readiness_level
python scripts/validate.py all locally to see detailed error messages.
Folder ownership check fails
Error: “Developer folder (your-name) does not match PR head repository owner (different-name)” Solution: Your folder name must exactly match your GitHub username. If your fork is under a different account, the folder name must match that account.Unverified commits
Error: “PR contains unverified commits. All commits must be signed with a verified GPG or SSH key.” Solution:- Verify your git config matches your signing key:
- Set up commit signing: GitHub Docs
- Configure auto-signing:
- If commits are already pushed, you’ll need to amend and force-push (or create a new PR with signed commits)
Next Steps
- Discover agents: Browse the index at agentsystems.github.io/agent-index
- Deploy private agents: See Deploying Private Agents
- Review schemas: Full schemas at github.com/agentsystems/agent-index/tree/main/schema

