This repository contains the deployment manifests for AGNTCY Directory project and serves as the federation registry for the public staging network. It is designed to be used with Argo CD for GitOps-style continuous deployment.
The manifests are organized into two main sections:
projects/: Contains Argo CD project definitions.projectapps/: Contains Argo CD application definitions.
The project will deploy the following components:
applications/dir- AGNTCY Directory server with storage backend (v1.3.0)applications/oidc-gateway- optional standalone OIDC/SPIFFE gateway for externaldirctl/ SDK / automation access (v1.0.0)applications/spire*- SPIRE stack for identity and federation (with SPIFFE CSI driver)
NOTE: This is not a production-ready deployment. It is provided as-is for demonstration and testing purposes.
Latest Version: v1.3.0 - See CHANGELOG.md for what's new.
Choose your path based on your goal:
Goal: Connect your application to the existing Directory network to discover agents.
Prerequisites: You'll need a SPIRE server in your environment.
Next Step: Follow the Client Onboarding Guide
Goal: Run your own Directory instance for local testing or private deployment.
Prerequisites: Kubernetes cluster (Kind, Minikube, or cloud provider)
Next Step: See Getting Started (Helm or GitOps/Argo CD)
Goal: Run your own Directory instance and federate with the public staging network.
Prerequisites: Kubernetes cluster + SPIRE knowledge
Next Steps:
- Deploy your Directory instance (see Getting Started)
- Setup federation (see Client Onboarding Guide after deployment)
As of dir v1.3.0, the Helm chart provides a default DHT bootstrap address for the public testbed. In most cases you should leave bootstrap-peer settings unset in your values unless you intentionally need to override that default.
The default Directory deployment in this repository uses SPIFFE/SPIRE-oriented authentication that works well for in-cluster workloads. If you also want to support dirctl, SDKs, or automation running outside the cluster, deploy the standalone oidc-gateway application alongside dir.
The public gateway chart lives in the dedicated repository:
This gateway puts Envoy in front of Directory:
- A remote client presents an OIDC JWT, SPIFFE JWT-SVID, or SPIFFE X.509-SVID.
- Envoy validates bearer JWTs with
jwt_authnor downstream SPIFFE mTLS when enabled. - The ext-authz service normalizes the caller to a canonical principal and checks allowed gRPC methods.
- Only authorized requests are forwarded to the internal Directory apiserver with the configured principal header.
Use the OIDC gateway when:
- You want remote
dirctlaccess from a laptop or workstation outside the cluster - You want a human login flow backed by Dex
- You want GitHub Actions or other external automation to call Directory with OIDC tokens
You do not need this gateway if you only use in-cluster, SPIFFE-based access.
The staging example now includes a separate oidc-gateway app under applications/oidc-gateway/dev/. The main settings are:
envoy.backend.*: points Envoy at the internal Directory serviceenvoy.oidc.issuers[]: configures Envoyjwt_authnproviders and JWKS lookup for bearer-token validationenvoy.oidc.github.*: configures GitHub Actions OIDC for automationauthServer.oidc.issuers: maps verified token issuers to stable provider keys such asdexorgithubauthServer.oidc.headers.authPrincipal: sets the canonical principal header forwarded to Directory (x-auth-principalby default)authServer.oidc.roles: maps canonical principals such asoidc:dex:alice,oidc:github:repo:..., orspiffe:spiffe://...to allowed gRPC methodsingress.*: exposes the Envoy gateway for external access over gRPC
If you want interactive user login, configure Dex in applications/dex/dev/values.yaml and make sure:
config.issuermatches the public URL where Dex is reachable- your GitHub OAuth app credentials are supplied through a Kubernetes Secret
- the Dex issuer values in
applications/dex/dev/values.yamlandapplications/oidc-gateway/dev/values.yamlmatch
Enabling Dex by itself is not enough for remote Directory access. Remote clients also need the standalone oidc-gateway deployed so their OIDC tokens can be validated before requests reach Directory.
The staging values file is a user-facing example. For the complete public source of truth for all supported fields, see:
agntcy/dir/install/charts/dir/values.yamlagntcy/oidc-gateway/install/charts/oidc-gateway/values.yaml
After deploying your Directory instance (see Getting Started), it will be isolated and cannot discover agents from other organizations.
Current State (Standalone):
- β Your Directory works for your organization
- β Cannot discover agents from other organizations
- β Your agents are not discoverable by others
- β Limited to your own trust domain
After Federation:
- β All standalone benefits
- β Discover agents across multiple organizations
- β Your agents become globally discoverable
- β Part of decentralized discovery network
Federation requires configuring SPIRE to exchange trust bundles with other Directory instances.
Follow these steps:
-
Choose a Federation Profile
- https_web (recommended): Uses standard HTTPS + Let's Encrypt, no SSL passthrough needed
- https_spiffe: Uses SPIFFE mTLS, requires SSL passthrough and bootstrap bundle exchange
See Federation Profiles for detailed comparison.
-
Create Your Federation File
- Describes how others can connect to your SPIRE federation endpoint
- Template:
onboarding/federation/.federation.web.template.yaml(or.federation.spiffe.template.yaml) - Example: See
onboarding/federation/prod.ads.outshift.io.yamlfor reference
-
Submit Your Federation File
- Fork this repository
- Add your file to
onboarding/federation/your-domain.com.yaml - Submit a Pull Request
-
Deploy Directory's Federation File
- After approval, deploy
onboarding/federation/prod.ads.outshift.io.yamlto your cluster - Run
task gen:dirto regenerateapplications/dir/gen.values.yaml - ArgoCD will automatically sync the federation configuration
- This tells your SPIRE how to connect to the Directory network
- After approval, deploy
Complete Instructions: See the Client Onboarding Guide for step-by-step federation setup.
| Topic | Link |
|---|---|
| Getting Started | docs.agntcy.org/dir/getting-started |
| Partner Federation with Prod | docs.agntcy.org/dir/partner-prod-federation |
| Federation Profiles | docs.agntcy.org/dir/federation-profiles |
| Federation Troubleshooting | docs.agntcy.org/dir/federation-troubleshooting |
| Production Deployment | docs.agntcy.org/dir/prod-deployment |
Distributed under Apache 2.0 License. See LICENSE for more information. Copyright AGNTCY Contributors (https://github.com/agntcy)