Stop hard-coding fees, limits, and business rules — and redeploying every time one changes.
Typed business configuration: the layer between feature flags and infrastructure config.
Alpha — all OpenDecree projects are under active development and subject to change. Not recommended for production use yet.
» Try it in 5 minutes — opendecree/demos
Define a field once:
# payments.decree.schema.yaml
fields:
payments.fee:
type: number
constraints: { min: 0.0, max: 1.0 }Get a typed, validated read everywhere:
// Go
fee, _ := client.GetFloat(ctx, tenantID, "payments.fee") // float64# Python
fee = client.get(tenant_id, "payments.fee", float)// TypeScript
const fee = await client.get(tenantId, "payments.fee", Number);OpenDecree sits between feature flags (release toggles) and infrastructure config (low-level key-value) — purpose-built for typed business config: fees, limits, approval rules, settlement windows.
| Capability | Feature Flags | Infra Config | OpenDecree |
|---|---|---|---|
| Typed values | bool / variant only | strings only | ✓ int, number, string, bool, time, duration, url, json |
| Multi-tenant | limited (segments) | ✗ | ✓ first-class, with field-level locking |
| Audit trail + rollback | limited | ✗ | ✓ full history, rollback to any state |
| Repo | Description |
|---|---|
| decree | Core service, Go SDKs, CLI |
| decree-python | Python SDK — opendecree on PyPI |
| decree-typescript | TypeScript SDK — @opendecree/sdk on npm |
| decree-ui | Admin GUI — React + Tailwind |
| demos | Hands-on examples — try OpenDecree in 5 minutes |
Alpha — all projects are under active development and subject to change. See the Roadmap for what is stable today and the path to a 1.0 stable release.
Questions, ideas, show-and-tell — OpenDecree Discussions is our single community hub across all repos.
See GOVERNANCE.md for how the project is governed.
Apache 2.0

