Module Registry & Marketplace โ
๐ง Status: Planned for M4 (February 2026)
This feature is currently in the design and planning phase.
Overview โ
The Gati Module Registry is a public npm-like registry for discovering, sharing, and installing Gati modules. Think of it as npm for Gati modules - a centralized place where developers can publish and discover reusable modules.
What is the Module Registry? โ
The Module Registry provides:
- Public Registry - npm-like package registry for Gati modules
- Marketplace - Browse, search, and discover modules
- Versioning - Semantic versioning for modules
- Dependencies - Automatic dependency resolution
- Discovery - Search and filter modules by category, popularity, etc.
- Revenue Sharing - Earn from your modules (70/30 split)
Module Types โ
Database Connectors โ
bash
gati module install @gati-modules/postgres
gati module install @gati-modules/mongodb
gati module install @gati-modules/mysql
gati module install @gati-modules/redisAuthentication Providers โ
bash
gati module install @gati-modules/oauth
gati module install @gati-modules/jwt
gati module install @gati-modules/saml
gati module install @gati-modules/auth0Queue Systems โ
bash
gati module install @gati-modules/rabbitmq
gati module install @gati-modules/kafka
gati module install @gati-modules/sqs
gati module install @gati-modules/redis-queueAI/ML Integrations โ
bash
gati module install @gati-modules/openai
gati module install @gati-modules/anthropic
gati module install @gati-modules/huggingfaceCache Systems โ
bash
gati module install @gati-modules/redis-cache
gati module install @gati-modules/memcached
gati module install @gati-modules/dragonflyUsing Modules โ
Installing Modules โ
bash
# Install a module
gati module install @gati-modules/postgres
# Install specific version
gati module install @gati-modules/postgres@2.1.0
# Install multiple modules
gati module install @gati-modules/postgres @gati-modules/redisUsing in Your App โ
typescript
// src/handlers/users/[id].ts
import type { Handler } from '@gati-framework/runtime';
export const handler: Handler = async (req, res, gctx, lctx) => {
// Module automatically available in gctx.modules
const user = await gctx.modules['postgres'].users.findById(req.params.id);
// Cache the result
await gctx.modules['redis'].set(`user:${req.params.id}`, user, 3600);
res.json({ user });
};Module Configuration โ
typescript
// gati.config.ts
export default {
modules: {
postgres: {
host: process.env.DB_HOST,
port: 5432,
database: 'myapp',
user: process.env.DB_USER,
password: process.env.DB_PASSWORD
},
redis: {
host: process.env.REDIS_HOST,
port: 6379
}
}
};Publishing Modules โ
Creating a Module โ
bash
# Create a new module
gati module create my-awesome-module
# Module structure
my-awesome-module/
โโโ src/
โ โโโ index.ts # Module entry point
โ โโโ types.ts # TypeScript types
โ โโโ config.ts # Configuration schema
โโโ tests/
โ โโโ index.test.ts
โโโ package.json
โโโ gati-module.json # Module manifest
โโโ README.mdModule Manifest โ
json
{
"name": "@myorg/my-awesome-module",
"version": "1.0.0",
"description": "An awesome Gati module",
"author": "Your Name",
"license": "MIT",
"gati": {
"type": "database",
"contracts": ["@gati-framework/database-contract"],
"dependencies": {
"@gati-modules/connection-pool": "^2.0.0"
}
},
"keywords": ["database", "sql", "postgres"],
"repository": "https://github.com/myorg/my-awesome-module"
}Publishing โ
bash
# Login to registry
gati registry login
# Publish module
gati module publish
# Module is now available in the marketplace!Marketplace Features โ
Discovery โ
- Search - Find modules by name, description, keywords
- Categories - Browse by type (database, auth, queue, etc.)
- Popularity - Sort by downloads, stars, ratings
- Trending - See what's popular this week/month
- Recommendations - Get suggestions based on your stack
Module Pages โ
Each module has a dedicated page with:
- README - Full documentation
- Installation - Quick install command
- Usage Examples - Code samples
- API Reference - Complete API docs
- Versions - Version history and changelog
- Dependencies - Required modules
- Stats - Downloads, stars, ratings
- Reviews - User feedback
Revenue Sharing โ
Module authors can earn from the marketplace:
- 70/30 Split - Authors get 70%, Gati gets 30%
- Paid Modules - Charge for premium modules
- Sponsorships - Accept sponsorships
- Support Tiers - Offer paid support
Module Contracts โ
Modules implement contracts to ensure compatibility:
typescript
// @gati-framework/database-contract
export interface DatabaseContract {
connect(): Promise<void>;
disconnect(): Promise<void>;
query<T>(sql: string, params?: unknown[]): Promise<T[]>;
transaction<T>(fn: (tx: Transaction) => Promise<T>): Promise<T>;
}Implementing a Contract โ
typescript
// src/index.ts
import type { Module } from '@gati-framework/runtime';
import type { DatabaseContract } from '@gati-framework/database-contract';
export const myDatabaseModule: Module<DatabaseContract> = {
name: 'my-database',
version: '1.0.0',
async init(config) {
const client = await createClient(config);
return {
async connect() {
await client.connect();
},
async disconnect() {
await client.disconnect();
},
async query(sql, params) {
return client.query(sql, params);
},
async transaction(fn) {
return client.transaction(fn);
}
};
}
};Registry API โ
The registry provides a REST API for programmatic access:
bash
# Search modules
GET https://registry.gati.dev/api/search?q=postgres
# Get module info
GET https://registry.gati.dev/api/modules/@gati-modules/postgres
# Get module versions
GET https://registry.gati.dev/api/modules/@gati-modules/postgres/versions
# Download module
GET https://registry.gati.dev/api/modules/@gati-modules/postgres/1.0.0/downloadCLI Commands โ
bash
# Search for modules
gati module search postgres
# Show module info
gati module info @gati-modules/postgres
# List installed modules
gati module list
# Update modules
gati module update
# Remove module
gati module remove @gati-modules/postgres
# Login to registry
gati registry login
# Publish module
gati module publish
# Unpublish module
gati module unpublish @myorg/my-module@1.0.0Security โ
Module Verification โ
- Code Scanning - Automated security scanning
- Dependency Audit - Check for vulnerable dependencies
- Signature Verification - Cryptographic signatures
- Sandboxing - Modules run in isolated environments
Trust Levels โ
- Verified - Official Gati modules
- Trusted - Community-verified modules
- Community - User-contributed modules
Roadmap โ
Phase 1 (February 2026) โ
- โ Basic registry infrastructure
- โ Module publishing and discovery
- โ CLI commands
- โ Web interface
Phase 2 (Q1 2026) โ
- โณ Marketplace with ratings and reviews
- โณ Revenue sharing system
- โณ Advanced search and filtering
- โณ Module recommendations
Phase 3 (Q2 2026) โ
- โณ Private registries for enterprises
- โณ Module analytics and insights
- โณ Automated testing and CI/CD
- โณ Module certification program
Related Documentation โ
- Module System - How modules work in Gati
- Module Contracts - Contract specifications
- Registry Specs - Technical specifications
- Contributing - Help build the registry
Contributing โ
Want to help build the Module Registry?
- ๐๏ธ Backend - Registry API and infrastructure
- ๐จ Frontend - Marketplace UI/UX
- ๐ฆ Modules - Create and publish modules
- ๐ Documentation - Write guides and tutorials
- ๐งช Testing - Test the registry and modules
Status: ๐ง In Planning
Target Release: M4 (February 2026)
Registry Specs: apps/gati-registry
Last Updated: November 22, 2025