Programmable workflows
Define complex, multi-step processes that react to events and manage the lifecycle of your Kubernetes resources. Koreo workflows enable automation of everything from simple deployments to entire cloud environments. It’s like programming—or choreographing—Kubernetes controllers.
Structured configuration management
Manage Kubernetes configurations the way they were intended—as structured data, not just templated strings. This allows you to easily validate, transform, and combine configurations from multiple sources in a manageable and scalable way.
Dynamic resource materialization
Inject values from a config file or overlay partial definitions to build up a complete resource view. Combine configurations from different sources like security, compliance, and SRE, and even apply custom logic, to give developers a golden path for provisioning applications, resources, or anything Kubernetes manages.
Configuration as functions
Inspired by functional programming principles, Koreo lets you decompose configuration into functions. These functions act as reusable building blocks to encapsulate common tasks and logic within your Koreo workflows. This promotes modularity, reduces duplication, and makes workflows easier to maintain and evolve.
Declarative operator model
Define your desired state through workflows and functions, and Koreo will automatically reconcile the actual state to match. This declarative approach simplifies management and ensures consistency across your infrastructure.
First-class testing and tooling
Actually treat configuration as code with Koreo’s built-in testing framework and developer tooling. Write unit tests for individual functions and entire workflows to catch errors early and prevent unexpected behavior. Koreo’s IDE integration gives you real-time feedback, autocomplete, and introspection.
Koreo is a platform engineering toolkit that introduces a new approach to configuration management and resource orchestration in Kubernetes. It builds upon the best aspects of tools like Helm, Kustomize, Argo, and Crossplane while addressing some of their limitations.
It serves as a meta-controller programming language and runtime that allows you to compose off-the-shelf operators into cohesive platforms by orchestrating Kubernetes controllers. Through powerful primitives, Koreo enables DevOps and platform engineers to create dynamic workflows that automate everything from simple deployments to entire internal developer platforms. Its layered configuration management enables teams like security, compliance, or SRE to enforce consistent standards and practices for resources within your organization.
Koreo empowers you to build complex Kubernetes platforms using composable workflows and functions, drawing inspiration from functional programming principles. Workflows act as blueprints for platform operations, defining the steps for tasks like application deployments or infrastructure provisioning. Functions are the individual building blocks within these workflows, encapsulating specific logic for data transformation, API interaction, or resource creation. And with built-in testing, you can validate configuration and catch errors early in the development process.
Th
10 Comments
techpineapple
I’ve been really interested in understanding how these things work better, but I’m having a lot of trouble understanding the devex / UX. I _think_ the idea behind Koreo is that any user can upload some resource definition, and koreo essentially shores it up on the backend. If I say I want an s3 bucket, Kori will look at my custom resource, then maybe if I have a label a that says it’s a temporary bucket it adds yams to my resource to add a 30 day lifecycle policy to delete the resource.
But I’m not sure I feel the advantage of this indirection. It feels confusing to be that the applied resource will be different from what’s in VCS, and the code feels super heavy for what you’re getting. I’ve been at like this and cross plane, and can’t quite grok why this is better than doing it in a classical programming language. But I think I’m wrong, can you help me understand?
arccy
I feel like it needs a comparison with https://kro.run/ and crossplane v2 which makes it more generic and less cluster scoped.
peterldowns
Just one more YAML bro I swear trust me bro just one more meta level will solve everything just one more yaml please I promise you it's not bad just write yaml it's simple and clean just some more yaml man just one more yaml file you will certainly not regret it just add one more yaml
(Congratulations on the launch, looks interesting!)
Esras
I think I can see some of where this could be utilized, but I think I'm still missing a step and I'm hopeful someone can fill me in.
There's a comparison against Argo Workflows, but with the description here and in other comments, Koreo seems to be aiming more for what I would use Argo CD for – managing the entire state of the cluster, the controllers, configuration, etc. Because of it tying into repos, you can then define the entire state of your cluster in code, and Argo CD has tools for doing some of the interpolation of variables into your YAML.
The project looks cool, and I don't think that the world suffers from having multiple ways of doing something, I just want to understand it better.
stackskipton
Since I'm Ops type so I took a look. Here are my thoughts in random order.
Templating systems are always frustrating, and I couldn't find CLI to spit out exactly what I was going to get. Kustomize ability to build exactly what cluster is going to consume is one of those features you miss when you don't have it.
Tying it to Kubernetes is both good and bad. Alot of companies use Kubernetes so for those companies, this is great. Downside is I think many companies are not ready to deal with complexity of Kubernetes so system that could put them outside of it might be great. That's just taste I guess.
This is a crowded field so good luck I guess.
Finally, the problem here everyone is trying to solve is skill gap and that's hard to fix with technology. Most devs are bad at Ops and that's where friction comes. It's like watching Product Owner develop their feature using LowCode or AI. It works until it doesn't and when it doesn't, here we go. I also realize few companies want us around since they see as pure money sink.
Most of my frustration around building platforms is lack of communication. Most of it due to developers not understanding or just not thinking about it (See skill issue above) so Ops is forced to put in something ugly to get them into Prod at 11 hour so we don't get tossed under the bus.
anthk
Why half of Kubernetes and AWS look like technogies to support… themselves instead of shipping a new product such as LXC/LXD?
Most of the current technologies can be virtualized, and with LVM snapshots are a breeze, even extending media it's perfectly done. There's no need to use half-backed namespaces when kernel-level deduplition for memory pages exist when you run similar parallel VM's.
I find virtualisation far easier than containers. Not as fast to deploy, sure; but far more manageable for rollbacks.
hbogert
Timoni ticked so many boxes for me. Hoe does this compare?
clvx
I feel I've built something similar using fluxcd + cuelang. FluxCD allows having order through depends on and how you organize your Kustomization resource.
I still believe the FluxCD project needs a UI that matches what you can get from the cli. CLI has so many features that you might or might not get fully from the available UI's.
dlahoda
> Koreo is the engine that powers Konfigurate, a batteries-included developer platform for startups and scaleups.
Yaml is no go for me.
Gradually typed languages, with support of unkown values, like Nickel can be good.
linuxftw
Here's the tension I find with projects like these: App developer knowledge seems to end with a helm chart. Anything more complex than that, they won't be able to deliver themselves. For platform/k8s admins, these tools are more cumbersome than just writing a dedicated operator in go.
What advantages does this offer over rolling my own CRD and operator? Assume it takes me 4 hours to write an operator end to end.