Cordis: Meta-Framework of Spatiotemporal Composability
Cordis encodes spatiotemporal composability into a plugin system on top of Effect. The idea is genuinely novel, but the API is unstable and the project is early. Worth exploring if you're deep in the Effect-TS ecosystem and want to experiment with temporal coordination patterns; skip it if you need production-stable tooling today.
What is Cordis
Cordis is a TypeScript meta-framework layered atop the Effect library. Instead of prescribing features, it supplies compositional primitives for building plugins that handle both spatial concerns (where code executes) and temporal concerns (when it fires). The framework treats these as first-class, composable units in your architecture.
The composability problem
Most frameworks treat composition as purely structural. Modules connect, but runtime behavior and coordination stay tangled. Spatiotemporal composability gives developers explicit, composable abstractions for when and where effects execute across distributed systems โ not just what modules depend on, but where they run and when they fire.
Core features
- โBuilt on Effect-TS โ Cordis requires Effect as a dependency and re-exports its types and utilities
- โSpatiotemporal composition primitives โ explicit APIs for composing plugins across both time and space dimensions
- โPlugin-first design โ the framework's job is to host and compose your plugins, not to provide a fixed feature set
- โTemporal logic hooks โ lifecycle events and scheduling are composable, not side-effects bolted on
- โDistributed coordination model โ spatial concerns include where effects run, not just what they depend on
- โMIT license, TypeScript throughout
Installing Cordis
npm install cordis
Building a plugin with Cordis
Import the core types and primitives from the package. Define a plugin by composing temporal and spatial units together, then register it with a Cordis host. The primer docs walk through a minimal plugin example from scratch. Since the API is unstable, pinning your dependency version and reviewing the changelog before each update is essential.
What to build with Cordis
- โขServerless function plugins requiring coordinated startup and teardown across multiple providers โ temporal composition handles the ordering problem without hand-rolling a state machine
- โขDistributed backend services where module lifecycle and cross-node messaging need to be expressed as a single composable unit โ spatial primitives let you scope effects to specific nodes or zones
- โขBackend services that need explicit control over when effects execute โ not just what runs, but when and where, expressed through composable temporal hooks
- โขPlugin systems that want to offer users composable building blocks instead of imperative configuration
- โขReplacing hand-rolled async orchestration with principled spatiotemporal primitives โ useful when your team is already comfortable with Effect-TS concepts
Strengths
- โNovel compositional model that makes time and space explicit in your plugin architecture
- โBuilt on Effect-TS โ if you already use Effect, Cordis slots in without learning a separate concurrency model
- โMIT license โ no restrictions on commercial or open-source use
- โActive development โ the team is shipping changes regularly
Known limitations
- โณAPI instability โ the README warns breaking changes can happen without notice, which is a real production risk
- โณEffect is a hard dependency, not optional โ you adopt both Cordis and the full Effect mental model at once
- โณDocumentation is thin โ only an academic paper and a primer exist; the gap between primer and real-world usage is large
- โณLearning curve is steep โ spatiotemporal composability is a new concept even for experienced developers
- โณNo production adopters or battle-tested examples cited in the README โ the gap between theory and practice is unproven
- โณFAQ or community troubleshooting resources are minimal
Alternatives to Cordis
Frequently asked questions
Cordis uses the MIT license. You can use it freely in commercial and open-source projects.
No. According to the README, the API has not yet achieved stability and could be changed without notice. It should not be used in production systems at this time.
It treats space and time as composable dimensions of your program. Instead of just composing what modules depend on, you compose where code runs and when it fires.
Yes. Cordis is built on top of Effect and re-exports its types and utilities. Effect is a required dependency, not optional.
The project is under active development, which is why the API carries no stability guarantees. Check the commit history on GitHub for the current pace.
TypeScript throughout, with Effect-TS types and utilities re-exported since Cordis builds directly on top of the Effect library.
Who should try it โ and who should skip
Reach for Cordis if you're already comfortable with Effect-TS and you need a principled way to compose plugins across time and nodes. The spatiotemporal model genuinely solves coordination problems that are painful to hand-roll. Skip it if you need stable APIs, rich documentation, or production proof-points โ or if Effect itself is still new territory for your team.
Related repositories
Curious whether cordis is right for you?
Let ChatGPT, Claude, or Perplexity look into it โ click below and see what AI actually says about cordis.
