Manage Catalyst Projects
A Catalyst project is the top-level container that groups workloads, components, configurations, subscriptions, and managed infrastructure. Each project exposes its own HTTP and gRPC Dapr endpoints, ingress and egress addresses, and role assignments — making projects the main unit of isolation between environments, teams, or applications in Catalyst.
Every operation on this page — creating projects, selecting them, updating managed services, and deleting them — can also be done from the Catalyst Web UI at catalyst.diagrid.io.
📦Logical container
A project groups all Dapr resources (workloads, components, subscriptions, configurations) and provides shared endpoints for the workloads inside it.
🔒Isolation boundary
Projects have their own network addresses, role scopes, and optionally managed Pub/Sub, Key/Value, and Workflow stores.
When to create a new project
Use a project to draw an isolation boundary. Common patterns:
- Per-environment — separate
dev,staging, andprodprojects so resources, components, and API keys never cross boundaries. - Per-team or per-business-unit — give each team its own project and scoped roles so they can only manage their own apps.
- Per-application — for workloads with stricter isolation requirements (regulated data, tenant-specific infrastructure, or dedicated resiliency policies).
A project lives inside a Region. On Catalyst Cloud the region is managed by Diagrid; on Catalyst Enterprise Self-Hosted you can create and deploy your own regions.
Create a project
Use the Diagrid CLI to create a project:
diagrid product use catalyst
# Create a project in the organization's default region
diagrid project create my-project --wait
# Or target a specific region explicitly
diagrid project create my-project --region my-region --wait
# Create a project that opts into the managed Pub/Sub broker and KV store
diagrid project create my-dev-project \
--deploy-managed-pubsub \
--deploy-managed-kv \
--wait
Without --region, projects are provisioned in the organization default region. On Catalyst Cloud the default is managed by Diagrid; on Catalyst Enterprise Self-Hosted you set it yourself with diagrid region use — creating a region does not auto-set it.
See diagrid project create and diagrid product use for the full flag set.
Managed Pub/Sub, Key/Value, and Workflow stores are hosted by Catalyst and available as backing infrastructure for development without provisioning your own. See Managed services.
Inspect a project
Every project exposes the network details your applications need to connect:
diagrid project get my-project
See diagrid project get for output formats. The output includes:
- HTTP endpoint and gRPC endpoint — the URLs your Dapr SDKs should point at.
- Ingress address — the public network address of the Catalyst Data Plane for this project.
- Egress address — the source IP address Catalyst uses when calling back into your applications. If your app lives behind a firewall, this is the IP you need to allow. Add it to your firewall, API gateway, or load balancer allowlists.
- Region — the region hosting the project.
- Managed services status — whether the managed Pub/Sub, KV, or workflow stores are enabled.
See the Connect to Catalyst guide for how these values are used.
Select the active project
Most Diagrid CLI commands operate on a currently selected project. Set it with:
# List all projects in the org
diagrid project list
# Select the active project for subsequent commands
diagrid project use my-project
See diagrid project list and diagrid project use.
You can also target a specific project per command with --project:
diagrid app list --project my-staging-project
Update a project
Update managed infrastructure or other project settings:
# Enable the managed KV store on an existing project
diagrid project update my-project --deploy-managed-kv --wait
See diagrid project update for the full flag set.
Delete a project
Deleting a project tears down all apps, components, subscriptions, and managed infrastructure inside it. Make sure no workloads still depend on the project before deleting.
diagrid project delete my-project --wait
Scoping roles to a project
Catalyst supports both global and project-scoped roles. Use project-scoped roles to let a developer team manage only their own project without granting access to the entire organization:
# Editor role scoped to a single project
diagrid apikey create --name dev-team-key \
--role cra.diagrid:editor:projects:my-dev-project \
--duration 2592000
See diagrid apikey create for the full role syntax and examples.
See Manage Access for the full list of roles and API keys for scoping patterns.
Enable verifiable execution
Verifiable execution cryptographically signs every event in a workflow's history, giving you a tamper-evident record that can be independently verified. Because signing builds on the workload identity and mTLS that Catalyst provides by default, there is nothing to configure in your application code — you enable it on the project, and it applies to every workflow that runs there:
# Workflow history signing can only be enabled at project creation
diagrid project create payments --enable-workflow-history-signing --wait
Signing is a permanent commitment for the workflows created under the project: a signed workflow must always run on signing-enabled infrastructure, you cannot retroactively sign an existing unsigned workflow, and disabling signing would prevent already-signed histories from loading. The signing adds negligible CPU cost, though the extra signature and certificate data increases the storage each workflow step consumes.
See diagrid project create for the full flag set.
Limits and quotas
Each project has limits that apply to the resources it contains — the number of workloads, components, pub/sub subscriptions, managed service data size, and request rate. These limits are counted per region: each region maintains its own independent quotas, so resources in different regions don't affect each other's limits. On Catalyst Cloud the free-tier limits apply per Cloud region; on Catalyst Enterprise the limits apply per Self-Hosted region.
Per-project request-rate limits and per-app body-size limits can be tuned at the app level — see Manage IDs for the --max-body-size flag and related controls.
What's next
- Manage IDs — register workloads inside a project.
- Manage Components — wire up backing infrastructure.
- Managed services — use built-in Pub/Sub, KV, and Workflow stores.
- Connect to Catalyst — project endpoints, apps, and callbacks.