{"id":13638518,"url":"https://github.com/hofstadter-io/cuelm","last_synced_at":"2025-08-23T13:25:59.954Z","repository":{"id":79205597,"uuid":"320703718","full_name":"hofstadter-io/cuelm","owner":"hofstadter-io","description":"Experiments with CUE on the quest to reimagine devops-ops.","archived":false,"fork":false,"pushed_at":"2025-05-11T22:54:33.000Z","size":295,"stargazers_count":36,"open_issues_count":1,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-05-11T23:26:35.673Z","etag":null,"topics":["cuelang","dagger","helm","hof","kubernetes","schema","terraform"],"latest_commit_sha":null,"homepage":"","language":"CUE","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hofstadter-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-12-11T23:07:17.000Z","updated_at":"2025-05-11T22:54:37.000Z","dependencies_parsed_at":"2024-01-14T04:44:43.283Z","dependency_job_id":"1a1aa4cf-85cd-4870-a45e-da20cceabb47","html_url":"https://github.com/hofstadter-io/cuelm","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/hofstadter-io/cuelm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hofstadter-io%2Fcuelm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hofstadter-io%2Fcuelm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hofstadter-io%2Fcuelm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hofstadter-io%2Fcuelm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hofstadter-io","download_url":"https://codeload.github.com/hofstadter-io/cuelm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hofstadter-io%2Fcuelm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271749048,"owners_count":24814115,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-23T02:00:09.327Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cuelang","dagger","helm","hof","kubernetes","schema","terraform"],"created_at":"2024-08-02T01:00:47.538Z","updated_at":"2025-08-23T13:25:59.918Z","avatar_url":"https://github.com/hofstadter-io.png","language":"CUE","funding_links":[],"categories":["terraform","CUE","Projects"],"sub_categories":[],"readme":"# Cuelm\n\n![latest tag](https://img.shields.io/github/v/tag/hofstadter-io/cuelm)\n\nExperiments with CUE for Helm, Terraform, and more\nin the quest to reimagine devops ops.\nThis repository has a collection of scripts and files to:\n\n- generating CUE schemas for|from tools \u0026 apis\n- enrichments and transformations, everything is a snowflake\n- automation for creating e2e artifacts the CUE community can use\n\n### Currently\n\nyou can...\n\nkubernetes:\n\n- schemas and enrichments  ([schema/k8s](./schema/k8s))\n- validate yaml resources\n- generate yaml from CUE\n\nterraform:\n\n- generate TF provider schemas as JSON (reshaping \u0026 cuetifying is WIP) ([schema/tf](./schema/tf))\n\n\nYou'll need\n[cue](https://cuelang.org/docs),\n[dagger](https://docs.dagger.io),\nand/or [hof](https://docs.hofstadter.io)\ndepending on which parts you use.\nWe use these tools to automate\nCUE schema generation for all the things.\n\n\n### Goals\n\nThe inspirational idea is to build a CUE based experience\nas we develop code and ship it from developer to user.\nWe want to leverage the various tools we already use,\nbut also explore where a CUE first approach might yield something better.\n\n- single config language spanning from commit to desired state\n- Real packages, imports, references, language constructs\n- Native schemas, defaults, templates, and transformations via Cue\n- consistent, singular source-of-truth (as much as possible anyway)\n- start as glue, replace when appropriate\n\nI want to say\n- deploy this app for me...\n  - it needs a database table in my namespace, I may or may not have one running (dev/test/ci vs prod)\n  - spin up required infra, but be lazy like dagger\n\n\n- want a drop in upgrade for the vanilla cue import of k8s\n  - publish a module, use as a dep eventually, import path domain, maybe need something else?\n  - wrap `vendor/k8s/...` with `schema/k8s/...` rather than adding files into the generated content?\n    - apiVersion \u0026 kind \u0026 other consts, port and other _ fields, perhaps we treat these differently?\n  - hof create to add to current projects for now\n\n\n\n### Pains\n\n[DevOps' Inferno - The Circles of YamHell](./docs/circles-of-yamhell.md)\n\n- Helm: Yaml files with text/template, ... more ... talked about elsewhere\n- HCL: Terraform, bad language constructs, leaky abstractions (most have this leak)\n- Pulumi: Language SDK or \"yaml\" (extended and !!\"interact with outside world\")\n- Crossplain: how does this fit in? Has some improvements, but need k8s just to do tf?!\n\nGenerally,\n\n- multiple, tool specific, languages or \"enhancements\"\n- competing workflows, or tools viaing to be the most important\n\n\n### Current work\n\n- [x] Dagger to do `cue import k8s`\n\n- fill in the gaps\n  - [x] add schema to ports (was _)\n  - [x] add apiVersion \u0026 kind to all k8s objects\n  - [ ] various fields are underspecified, (like ip / cidr)\n\n- defaults (show different scales of providing them, schema separate from defaults)\n\n- Hof creator to setup using this project\n- publish OCI modules to github for enriched k8s\n  - (make these github.com/hofstadter-io/k8s.io/... explain the hof prefix will go away)\n  - Dagger to publish\n\n- example of a widely used chart side-by-side with the CUE version (especially show the templates) (also cloc)\n- Hof flow to run gen / stacks / charts / helm\n\n### Usage\n\n- Setup your project as a Cue module (`hof mod init cue \u003cmodule name\u003e`)\n- Add this repo to your `cue.mods` file and `hof mod vendor cue`\n- Create Cue files using this ([external example](https://github.com/hofstadter-io/cuetorials.com/blob/main/ci/cuelm.cue))\n- `cue export -e Install | kubectl apply -f -`\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhofstadter-io%2Fcuelm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhofstadter-io%2Fcuelm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhofstadter-io%2Fcuelm/lists"}