Federate your first catalogs
This tutorial takes you through the first successful Federation workflow:
- Create a team catalog
- Create an empty organization catalog
- Configure the team catalog as a local source
- Run Federation
- Open the combined catalog
The goal is to learn the federation loop before introducing GitHub, CI, or organization-wide validation rules.
What you will build
Prerequisites
Before you start, make sure you have:
- Node.js 22 or later
- Git installed
- An EventCatalog Enterprise license key from EventCatalog Cloud
- A terminal and text editor
Check Node and Git with:
node -v
git --version
Create the tutorial catalogs
Create a directory for the tutorial:
mkdir federation-tutorial
cd federation-tutorial
Create a team catalog with the sample resources included by the EventCatalog installer:
npx @eventcatalog/create-eventcatalog@latest team-catalog
Create an empty catalog that will become the organization view:
npx @eventcatalog/create-eventcatalog@latest organization-catalog --empty
You now have two sibling projects:
federation-tutorial/
├── team-catalog/
└── organization-catalog/
Add your license key
Create or update organization-catalog/.env:
EVENTCATALOG_SCALE_LICENSE_KEY=your-license-key
Do not commit a real license key to source control.
Configure the local source
Open organization-catalog/eventcatalog.config.js and add federation.sources to the exported configuration:
export default {
// Keep the settings created by the installer...
federation: {
sources: [
{
id: 'tutorial/team-catalog',
source: 'file:../team-catalog',
},
],
},
};
The source path is relative to the organization catalog. The id is the stable identity Federation uses for ownership, generated paths, and diagnostics.
Ignore generated output
Add the generated federation directory and cache to organization-catalog/.gitignore:
federated/
.eventcatalog-cache/
Do not edit files under federated/. Federation replaces that directory on a successful run.
Run Federation
Move into the organization catalog and run the command:
cd organization-catalog
# If this does not work, add federate script in your package.json "federate: eventcatalog federate"
npm run federate
A successful run ends with output similar to:
[federation] Graph resolved: 20 remote resources, 28 relationships
[federation] Federation complete: 1 source, 20 remote resources, 35 files written
[federation] Recorded resolved source state in eventcatalog.lock
The exact resource and file counts depend on the current starter catalog.
Federation has now created:
federated/containing the team catalog resources.eventcatalog-cache/federation/content/containing verified reusable contenteventcatalog.lockrecording the source state resolved by this run
Open the organization catalog
Start the organization catalog:
npm run dev
Open http://localhost:3000. The resources from team-catalog now appear in the organization catalog.
Make a source change
Stop the development server, then change the name or documentation of a resource in team-catalog.
Run Federation again from organization-catalog:
npx eventcatalog federate
Start the development server again. The organization view now contains the updated source content.
Local filesystem sources are one-shot inputs. You need to rerun eventcatalog federate after a source changes.
What you learned
You have completed the core federation loop:
- A team catalog owns its source documentation
- The organization catalog selects it through configuration
- Federation indexes, validates, and materializes the source
- The normal EventCatalog application renders the combined view
- Rerunning Federation updates the generated output
Next, learn how to configure GitHub sources, resolve relationships across catalogs, or run Federation in CI.