Inspired by KNIME. Made for the cloud. Built to never die.
Project Continuum is split across several focused repositories:
| Repository | Description |
|---|---|
| Continuum (this repo) | Core backend β API server, worker framework, shared libraries |
| continuum-workbench | Browser IDE β Eclipse Theia + React Flow workflow editor |
| continuum-feature-base | Base analytics nodes β data transforms, REST, scripting, anomaly detection |
| continuum-feature-ai | AI/ML nodes β LLM fine-tuning with Unsloth + LoRA |
| continuum-feature-template | Template β scaffold your own custom worker with nodes |
This monorepo contains the core backend infrastructure for Project Continuum:
| Module | Purpose |
|---|---|
continuum-commons |
Shared library β node model base classes, data types, Parquet/S3 utilities |
continuum-worker-springboot-starter |
Spring Boot starter for building workers β auto-registers nodes with Temporal |
continuum-api-server |
REST API server β manages workflows, node registry, executions |
continuum-message-bridge |
Kafka-to-MQTT bridge β streams execution events to the browser |
continuum-avro-schemas |
Shared Avro schemas for Kafka messages |
continuum-knime-base |
KNIME compatibility layer (experimental) |
Looking for workflow nodes? See continuum-feature-base and continuum-feature-ai.
Looking for the UI? See continuum-workbench.
- Truly cloud-native β not a desktop app ported to the web. Built from day one for browsers, containers, and distributed infrastructure.
- Crash-proof by design β powered by Temporal, workflows survive process crashes, network failures, and restarts without losing a single step.
- Watch it happen live β every node execution streams back to your browser in real time via Kafka β MQTT. No refresh. No polling.
- Data stays fast β nodes pass Apache Parquet tables, not JSON blobs. Columnar, compressed, query-ready from the start.
- Extend without breaking β add new capabilities by deploying new workers, not by touching existing ones. Zero downtime. Zero coupling.
Start with a drop. One node. Two. Transform. Branch. Loop.
Each step tiny. But at the end β it's a river. A request turned system. A click turned outcome.
Most tools look good. Then break. We want graphs that keep running β even if Kafka dies, even if S3 lags, even if your code crashes.
| Feature | Description | |
|---|---|---|
| π¨ | Browser-Native Canvas | Drag-and-drop workflow editor β real IDE feel, zero install |
| π | Indestructible Execution | Workflows survive crashes, restarts, and infrastructure failures |
| β‘ | Live Streaming Updates | Watch your workflow execute step-by-step in real time |
| π | Columnar Data Passing | Parquet tables between nodes β fast, query-ready |
| π§ͺ | AI / ML Ready | Train models with Unsloth, run inference, all inside your flow |
| π³ | Self-Hostable | Docker Compose up and you're running |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β BROWSER β
β Eclipse Theia + React Flow (drag & drop canvas) β
ββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββ
β WebSocket / REST
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β BACKEND (Kotlin + Spring Boot) β
β Typed, clean, contract-safe API server β
ββββββββ¬βββββββββββββββββββββββββββββββ¬ββββββββββββββββ
β β
βΌ βΌ
ββββββββββββββββ βββββββββββββββββββββββββ
β Temporal β β Kafka β MQTT (WS) β
β Durable β β Live event stream β
β Execution β β step-by-step updates β
ββββββββββββββββ βββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Storage: AWS S3 / MinIO (local dev) β
β Format: Apache Parquet β columnar, fast β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Layer | Technology | Why |
|---|---|---|
| Canvas | Eclipse Theia + React Flow | Full IDE experience in the browser |
| Engine | Temporal | Durable execution, auto-retry, infinite scale |
| Events | Kafka β MQTT over WebSockets | Real-time step-by-step workflow updates |
| Data | Apache Parquet | Fast, columnar, query-ready inter-node data |
| Storage | AWS S3 / MinIO | Open, portable, no vendor lock-in |
| Backend | Kotlin + Spring Boot | Type-safe, clean, battle-tested |
| Resilience | Temporal | Fails? Retries. Crashes? Recovers. Forever. |
| Flow Control | Output null on a port = flow stops |
Simple guard logic. Real loops coming. |
π§ Zero-config IDE setup β This repo ships with shared IntelliJ IDEA Run Configurations in the
.run/directory. Just open the project and they'll be auto-detected in your Run/Debug toolbar β no manual setup needed.Included configurations: ApiServer, MessageBridge
- Open the project in IntelliJ IDEA
- Start infrastructure:
cd docker && docker compose up -d
- Select a run configuration from the toolbar and hit
βΆοΈ β start ApiServer and MessageBridge - Start a feature worker from one of the feature repos (e.g., continuum-feature-base)
- Start the browser UI from continuum-workbench
- Open http://localhost:3002 and start building workflows!
# Clone the repo
git clone https://github.com/projectcontinuum/Continuum.git
cd Continuum
# Spin up infrastructure (Temporal, Kafka, MinIO, Mosquitto)
cd docker
docker compose up -d
# Build & run the backend
./gradlew :continuum-api-server:bootRun --args='--server.port=8080'
# (In another terminal) Build and run Message Bridge (Kafka β MQTT)
./gradlew :continuum-message-bridge:bootRun --args='--server.port=8082'
# Start a feature worker from a feature repo (e.g., continuum-feature-base)
# See: https://github.com/projectcontinuum/continuum-feature-base
# Start the browser UI from the workbench repo
# See: https://github.com/projectcontinuum/continuum-workbenchπ‘ Tip: Pass any
spring.*property via--args:./gradlew :continuum-api-server:bootRun --args='--spring.profiles.active=dev --server.port=9090'
π‘ Full setup guide coming soon. For now β explore, break things, open issues.
Don't bloat. Distribute.
Most workflow engines pack every capability into a single worker β and when it breaks, everything breaks.
Continuum takes a different path:
- One worker = one set of capabilities. A worker that handles REST calls doesn't need to know about chemistry or AI training.
- Add capabilities by adding workers β not by inflating existing ones. Need RDKit nodes? Spin up an RDKit worker. Need Unsloth? That's its own worker. The core stays untouched.
- Zero downtime for everyone else. Deploy, update, or crash a worker β other workers keep running. No shared fate.
- Anyone can host a worker. You can write and run your own worker offering custom nodes β plug it into the shared registry, and the platform discovers it automatically.
ββββββββββββββ ββββββββββββββ ββββββββββββββ ββββββββββββββββ
β Base Worker β β AI Worker β β Chem Worker β β Your Worker β
β REST, CSV β β Unsloth β β RDKit β β Anything! β
β Transform β β Inference β β Molecules β β Your nodes β
βββββββ¬βββββββ βββββββ¬βββββββ βββββββ¬βββββββ ββββββββ¬ββββββββ
β β β β
βββββββββββββββββ΄ββββββββ¬ββββββββ΄ββββββββββββββββββ
βΌ
ββββββββββββββββββββ
β Shared Registry β
β (Auto-discovery) β
ββββββββββββββββββββ
This is the vision: a marketplace of workers β lightweight, independent, community-driven.
- Drag-and-drop visual workflow editor
- Durable execution with Temporal
- Live streaming updates via Kafka β MQTT
- Parquet-based data passing between nodes
- Base node library (Transform, REST, Branch, etc.)
- Unsloth AI training node
- IntelliJ IDEA shared run configurations β zero-config dev setup
- Multi-repo architecture β feature nodes developed independently as separate workers
- π True
while/forloops with condition builder - π₯οΈ Electron standalone β run Continuum as a native desktop app, no browser required
- π§ͺ More RDKit chemistry nodes β full RDKit integration for molecular workflows
- π₯ PyTorch nodes β training, inference, and model management natively in your flow
- π€ Full AI training node suite (Unsloth ecosystem)
- π Plugin store β Slack, Stripe, Databases, AI services
- π Human-in-the-loop β interactive workflows with approval gates, manual review steps, and pause/resume
- π Visual debugger with timeline replay
- π₯ Auth, multi-tenancy & RBAC β authentication, role-based access control, and approval workflows baked in
- ποΈ Multi-worker ecosystem β bring your own worker with custom nodes, auto-discovered via shared registry, zero downtime for others
- π Central node repository β a single registry where all workers publish their available nodes, making them discoverable and composable across the platform
- βΈοΈ Helm chart β production-ready Kubernetes deployment for horizontal scaling
- π¦ Zero-config self-host with
docker compose up
We're launching a dedicated YouTube channel with deep dives, demos, and architecture walkthroughs. Subscribe to stay in the loop:
- π₯ Live workflow builds β watch real pipelines come together from scratch
- π§ Architecture breakdowns β how Temporal, Kafka, and the worker ecosystem fit together
- π¬ Community discussions β Q&A, roadmap talks, and contributor spotlights
π Channel link dropping soon β star the repo so you don't miss it!
We don't want perfect. We want working.
If you see the gap β fill it. Check out the Issues page, pick something, and send a PR.
First time? Look for issues labeled good first issue. We're friendly.
Apache 2.0 β open, safe, patent-protected.
| Repository | Description |
|---|---|
| Continuum (this repo) | Core backend β API server, worker framework, shared libraries |
| continuum-workbench | Browser IDE β Eclipse Theia + React Flow workflow editor |
| continuum-feature-base | Base analytics nodes β data transforms, REST, scripting, anomaly detection |
| continuum-feature-ai | AI/ML nodes β LLM fine-tuning with Unsloth + LoRA |
| continuum-feature-template | Template β scaffold your own custom worker with nodes |


