App Registries
App registries allow you to deploy and distribute Flows apps within your organization or publicly. A registry is simply a collection of JSON files hosted on a web server that describe available apps and their versions.
Overviewยป
App registries provide:
- Centralized distribution: Host apps on any web server (S3, GitHub Pages, etc.)
- Version management: Support multiple versions of each app with semantic versioning
- Automatic updates: Flows periodically checks registries for new versions
- Checksum verification: Ensures artifact integrity with SHA-256 checksums
Organizations automatically subscribe to the official Core and Community registries, but you can create and subscribe to custom registries for internal or third-party apps.
Registry Structureยป
A registry consists of two types of JSON files:
- Registry manifest - The main index file listing all apps
- App metadata files - Individual files for each app containing version information
Registry Manifestยป
The registry manifest is a JSON file at the root URL of your registry:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
Fields:
apps: Object mapping app keys to app information- App key: Unique identifier for the app (used in URLs, must be URL-safe)
name: Display name shown in the UIdescription: Brief description of the app's functionalityblockStyle: Visual styling for the app's blocksiconUrl: URL to the app icon (PNG or SVG)color: Hex color code for the block background
appMetadataUrl: URL to the app's version metadata file
App Metadata Fileยป
Each app has a metadata file listing its available versions:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Fields:
versions: Array of version objects (order doesn't matter)version: Semantic version string (e.g., "1.2.3")artifactUrl: URL to download the .tar.gz artifactartifactChecksum: SHA-256 checksum in the formatsha256:HEX_STRING
Creating Your Own Registryยป
1. Choose hostingยป
You can host your registry on any static file server:
- Amazon S3: Simple, scalable storage with CloudFront CDN
- GitHub Pages: Free hosting for public registries
- Azure Blob Storage: Enterprise-grade storage with CDN
- Your own web server: Any HTTP server can serve JSON files
2. Create app artifactsยป
Build your app artifacts using flowctl:
1 2 | |
This creates a .tar.gz file containing your app code.
3. Calculate checksumsยป
Generate SHA-256 checksums for your artifacts:
1 2 3 4 | |
Format the checksum as sha256:HEX_STRING for the metadata file.
4. Create metadata filesยป
Create the app metadata file (versions.json):
1 2 3 4 5 6 7 8 9 | |
5. Create the registry manifestยป
Create the main registry manifest file:
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
6. Upload filesยป
Upload all files to your hosting service:
1 2 3 4 5 6 7 | |
7. Configure CORS (if needed)ยป
If hosting on S3 or another origin, configure CORS headers to allow Flows to fetch the files:
1 2 3 4 5 6 7 8 9 | |
Example: GitHub Pages Registryยป
Here's a complete example using GitHub Pages:
Repository structureยป
1 2 3 4 5 6 7 8 | |
index.jsonยป
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
apps/my-app/versions.jsonยป
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
GitHub Pages setupยป
- Create a repository with your registry files
- Enable GitHub Pages in repository settings
- Set source to the main branch
- Access your registry at
https://myorg.github.io/my-flows-registry/index.json
Subscribing to a Registryยป
Once your registry is set up, subscribe your organization to it through the Flows UI or API.
Via UIยป
- Navigate to Settings โ App Registries
- Click Subscribe to Registry
- Enter your registry URL (e.g.,
https://my-registry.example.com/registry.json) - Provide a name for the registry
- Click Subscribe
Flows will automatically refresh the registry and make apps available for installation.
Via APIยป
1 2 3 4 5 6 | |
Publishing New Versionsยป
To publish a new version of an app:
- Build the artifact:
1 | |
- Calculate checksum:
1 | |
- Update versions.json:
1 2 3 4 5 6 7 8 9 | |
- Upload files: Upload the new artifact and updated
versions.json
Flows automatically checks for updates hourly and will discover the new version.
Best Practicesยป
Securityยป
- Always use HTTPS: Protect artifacts and metadata in transit
- Verify checksums: Flows automatically verifies checksums to prevent tampering
- Access control: Use signed URLs or authentication if hosting sensitive apps
- CORS configuration: Only allow necessary origins if possible
Organizationยป
- Semantic versioning: Follow SemVer for predictable version management
- Immutable artifacts: Never modify published artifacts; publish new versions instead
- Directory structure: Keep a clean, organized structure for maintainability
- Documentation: Include a README in your registry repository
Performanceยป
- Use a CDN: CloudFront, Fastly, or similar for faster global access
- Compress artifacts: Use gzip compression for artifacts (already done by tar.gz)
- Cache headers: Set appropriate cache headers for JSON files (e.g.,
Cache-Control: public, max-age=300)
Version managementยป
- Keep all versions: Don't delete old versions users may depend on
- Document breaking changes: Note major version changes in descriptions
- Test before publishing: Validate artifacts work before adding to registry
- Gradual rollout: Test new versions in development before promoting
Official Registriesยป
Flows includes two official registries:
- Core Registry (
https://registry.useflows.com/core): Official apps maintained by Spacelift - Community Registry (
https://registry.useflows.com/community): Community-contributed apps
All organizations are automatically subscribed to these registries upon creation.
Troubleshootingยป
Registry not refreshingยป
- Check that your registry URL is accessible via HTTPS
- Verify CORS headers are configured correctly
- Ensure JSON files are valid (use a JSON validator)
- Check Flows logs for specific error messages
Checksums don't matchยป
- Verify you're using SHA-256 (not SHA-1 or MD5)
- Ensure the format is exactly
sha256:HEX_STRING(all lowercase) - Check that the artifact file wasn't modified after checksum calculation
- Recalculate the checksum and update the metadata
Icons not displayingยป
- Verify the icon URL is accessible via HTTPS
- Check that CORS headers allow the Flows domain
- Ensure the image format is PNG or SVG
- Keep icon files under 1MB for best performance
Apps not appearingยป
- Verify the app key is URL-safe (alphanumeric, hyphens, underscores)
- Check that
appMetadataUrlis correct and accessible - Ensure at least one valid version exists in the versions array
- Validate all version strings follow semantic versioning
See Alsoยป
- Custom Apps - How to create your own apps
- Building Apps - Comprehensive guide to the Flows app SDK
- flowctl on GitHub - CLI tool for building apps