Addons
Addons are separate Go modules that implement ss-keel-core/contracts.
This is the extension model used across the Keel ecosystem:
ss-keel-coreowns the runtime and the contracts package- addon repositories implement those contracts
- applications decide which addons to compose in
main.go
See Architecture for the layer boundaries.
Official persistence integrations
Section titled “Official persistence integrations”The persistence layer is not built into core. It lives in official addons.
| Package | Description | Contract |
|---|---|---|
ss-keel-gorm | Official relational persistence addon for PostgreSQL, MySQL, MariaDB, SQLite, and SQL Server | contracts.Repository[T, ID, httpx.PageQuery, httpx.Page[T]] |
ss-keel-mongo | Official MongoDB persistence addon using the official Go driver | contracts.Repository[T, ID, httpx.PageQuery, httpx.Page[T]] |
Official example coverage today:
ss-keel-examples/examples/08-gorm-postgresforss-keel-gormss-keel-examples/examples/13-mongoforss-keel-mongoss-keel-examples/examples/14-redis-cacheforss-keel-redisss-keel-examples/examples/10-addon-examplefor addon consumption patterns
See Persistence for the official persistence overview.
Addon ecosystem
Section titled “Addon ecosystem”The addon ecosystem is organized into three repositories:
keel: provideskeel addand executes addon installation stepsss-keel-addon-template: GitHub template to bootstrap new addon repositoriesss-keel-addons: official alias registry consumed bykeel add
Recommended entry points:
- Install addons:
addcommand - Create and publish addons: Addon Ecosystem
Live addon categories
Section titled “Live addon categories”Databases
Section titled “Databases”| Package | Description | Contract |
|---|---|---|
ss-keel-gorm | Relational persistence via GORM | Repository[T, ID, httpx.PageQuery, httpx.Page[T]] |
ss-keel-mongo | MongoDB persistence via mongo-driver | Repository[T, ID, httpx.PageQuery, httpx.Page[T]] |
Cache and sessions
Section titled “Cache and sessions”| Package | Description | Contract |
|---|---|---|
ss-keel-redis | Redis via go-redis for cache and sessions | Cache |
Authentication
Section titled “Authentication”| Package | Description | Contract |
|---|---|---|
ss-keel-jwt | JWT generation, validation, and guards | Guard |
ss-keel-oauth | OAuth2 providers and guards | Guard |
Build your own adapter
Section titled “Build your own adapter”Each addon is a contract implementation. You can build one without changing the runtime:
type InMemoryCache struct { mu sync.RWMutex store map[string][]byte}
func (c *InMemoryCache) Get(ctx context.Context, key string) ([]byte, error) { c.mu.RLock() defer c.mu.RUnlock() v, ok := c.store[key] if !ok { return nil, errors.New("key not found") } return v, nil}See Contracts for the full contract catalog.