{"id":50309441,"url":"https://github.com/finnmglas/betriebssystem","last_synced_at":"2026-05-28T19:30:39.052Z","repository":{"id":360671725,"uuid":"1251185771","full_name":"finnmglas/betriebssystem","owner":"finnmglas","description":"AI ready linux distribution for agentic development. Optinionated defaults that help me (and possibly you too) get stuff done faster. Installable, Live-Bootable, Customizeable. Built by Finn Glas","archived":false,"fork":false,"pushed_at":"2026-05-27T10:49:52.000Z","size":500,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-27T12:17:29.780Z","etag":null,"topics":["agentic","agentic-os","ai-agents","claude","claude-code","debian","fleet-management","iso","linux","linux-fleet","live-build","live-build-config","operating-system","whitelabel-os"],"latest_commit_sha":null,"homepage":"https://finnmglas.com","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/finnmglas.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,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-27T10:25:13.000Z","updated_at":"2026-05-27T11:24:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/finnmglas/betriebssystem","commit_stats":null,"previous_names":["finnmglas/betriebssystem"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/finnmglas/betriebssystem","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/finnmglas%2Fbetriebssystem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/finnmglas%2Fbetriebssystem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/finnmglas%2Fbetriebssystem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/finnmglas%2Fbetriebssystem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/finnmglas","download_url":"https://codeload.github.com/finnmglas/betriebssystem/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/finnmglas%2Fbetriebssystem/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33624202,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-28T02:00:06.440Z","response_time":99,"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":["agentic","agentic-os","ai-agents","claude","claude-code","debian","fleet-management","iso","linux","linux-fleet","live-build","live-build-config","operating-system","whitelabel-os"],"created_at":"2026-05-28T19:30:38.028Z","updated_at":"2026-05-28T19:30:39.045Z","avatar_url":"https://github.com/finnmglas.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003e **Human-generated intro message:**\\\n\u003e This project helps me set up new machines quickly.\\\n\u003e Smartly optininated package decisions for agentic development.\\\n\u003e Feel free to reach out or just use this project :)\\\n\u003e \\- Finn \u003cfinn@finnmglas.com\u003e\n\n\u003e *Sidenote: If you're stuck on windows, this can help you transition to the good side quickly too!*\n\n\u003cdiv align=\"center\"\u003e\n\n![BETRIEBSSYSTEM](branding/out/betriebssystem-1024.png)\n\n# BETRIEBSSYSTEM\n\nAn AI-ready Linux distribution — live-built from the terminal, shipping\neverything an agentic developer workload needs out of the box.\nGNOME on Wayland, root-on-ZFS, and a single white circle for a face.\n\n\u003c/div\u003e\n\n\u003e *Betriebssystem* is the German word for **operating system** (OS).\n\n---\n\n## Screenshots\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" width=\"50%\"\u003e\n      \u003cimg src=\"branding/screens/gnome-overview.png\" width=\"100%\"\u003e\u003cbr\u003e\n      \u003csub\u003e\u003cb\u003eGNOME 48 on Wayland\u003c/b\u003e — the activities overview, white circle on black.\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"50%\"\u003e\n      \u003cimg src=\"branding/screens/claude-native.png\" width=\"100%\"\u003e\u003cbr\u003e\n      \u003csub\u003e\u003cb\u003eClaude Code\u003c/b\u003e — ready in the terminal (xonsh) on first boot.\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" width=\"50%\"\u003e\n      \u003cimg src=\"branding/screens/smart-menu-binds.png\" width=\"100%\"\u003e\u003cbr\u003e\n      \u003csub\u003e\u003cb\u003eSmart right-click actions\u003c/b\u003e in Files — Open in VS Code, Compress / Merge PDF.\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"50%\"\u003e\n      \u003cimg src=\"branding/screens/grub-menu.png\" width=\"100%\"\u003e\u003cbr\u003e\n      \u003csub\u003e\u003cb\u003eHybrid BIOS/UEFI boot menu\u003c/b\u003e — live boot, Install, and fail-safe.\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\n## What this is\n\nAn AI-ready Linux distribution / operating system that can be **live-built from\nthe terminal**, and ships with everything needed to run agentic developer\nworkloads out of the box: **Claude**, **VS Code**, **Docker**, **Ollama**, **ML\nlibraries**, **emulators**, and full **multimedia codecs**.\n\nUnder the hood it's a buildable, git-tracked Debian live/install image:\n\n- **Base** — Debian 13 *trixie* (`main contrib non-free-firmware`).\n- **Desktop** — GNOME 48 on **Wayland**/Mutter, dark by default.\n- **Filesystem** — the **installed** system runs on **root-on-ZFS** (via the\n  Calamares installer). The live ISO boots from squashfs but ships full ZFS tooling.\n- **Identity** — no logos or wordmarks, just a **white circle on black**\n  everywhere (boot splash, GRUB, wallpaper, login, installer).\n- **Boot** — one hybrid ISO for **BIOS and UEFI**, with a live boot and an\n  **Install** entry.\n\nThe whole image is defined declaratively by [`auto/config`](auto/config) and the\n`config/` tree, so it's reproducible and extensible. The three things you'll\nactually do — **build**, **run**, **dev** — are below.\n\n## What's included\n\nA batteries-included workstation, not a minimal shell:\n\n- **Dev** — VS Code, Claude Code (CLI), Git/LFS, build toolchain; Python · Node ·\n  Go · Rust · Java · Kotlin · Ruby · Lua · PHP · Fortran · Lisp; JupyterLab +\n  PlatformIO; Docker. Local AI: an `/opt/ai-venv` stack + Ollama.\n- **Shell** — xonsh interactive shell (bash stays the login shell), fzf + zoxide.\n- **Emulation** — double-click a ROM and it runs (`.gba/.gb/.gbc/.nes/.n64/.nds`\n  via mGBA/Dolphin/Mupen64/DeSmuME/Nestopia/RetroArch); `.exe`/`.msi` → Wine;\n  `.apk` → Waydroid (post-install).\n- **Virt / embedded** — GNOME Boxes, virt-manager, QEMU/KVM, libvirt; Arduino,\n  ESP32, serial tooling.\n- **Apps / media** — LibreOffice, Firefox, Chrome, GIMP/Inkscape/Audacity,\n  Blender + CAD/slicers, full codecs; Logseq/Android Studio/Arduino IDE (first boot).\n\nSee [`CLAUDE.md`](CLAUDE.md) for the complete software map.\n\n---\n\n## Build\n\nNeeds a **Debian/Ubuntu host** and **root** — `live-build` bootstraps a chroot\nand mounts pseudo-filesystems, so it can't run unprivileged.\n\n```bash\nmake deps                  # install host build deps (once)\nsudo ./scripts/build.sh    # build a dev ISO  → dist/BETRIEBSSYSTEM-0.1.0-amd64.iso\n```\n\nFirst build downloads packages and takes **20–60+ min**; later builds reuse the\napt cache in `cache/` (gitignored), so they're much faster. A `.sha256` is\nwritten next to the ISO, and every build is also filed into\n[`archive/`](archive/MANIFEST.md) stamped with its git commit.\n\nFor a **release** ISO (scrubs the cosmetic tells that it was assembled with\nlive-build):\n\n```bash\nmake release               # → dist/BETRIEBSSYSTEM-0.1.0-release-amd64.iso\n```\n\n\u003e Expect a release ISO around **8–15 GB** with the full stack. Flatpak/pipx/\n\u003e arduino-cli fetch over the network at build or first boot.\n\n## Run\n\nBoots the newest ISO in `dist/`. KVM is auto-detected (falls back to slow TCG).\n\n```bash\nmake run                   # BIOS,         16G RAM / 8 vCPU\nmake run-uefi              # UEFI (OVMF)\nmake run-install           # UEFI + a blank disk, to test installing to ZFS\n```\n\nThese wrap [`scripts/run-qemu.sh`](scripts/run-qemu.sh), which takes more knobs\n(`--ram=`, `--cpus=`, `--disk-size=`, `--no-gl`, …). You should see: a breathing\nwhite circle (Plymouth) → GDM → a GNOME desktop with an **Install BETRIEBSSYSTEM**\nlauncher.\n\nRunning QEMU needs `qemu-system-x86` (and `ovmf` for `--uefi`):\n\n```bash\nsudo apt-get install -y qemu-system-x86 ovmf\n```\n\nIf `/dev/kvm` isn't usable for your user: `sudo usermod -aG kvm \"$USER\"`, then\nre-login.\n\n## Dev\n\nThe inner loop — edit, rebuild, boot:\n\n```bash\n# edit auto/config, config/**, or branding/brand.json …\nlb config                  # validate auto/config (unprivileged, fast)\nmake branding              # re-render white-circle assets after editing brand.json\nmake clean                 # drop artifacts, keep apt cache → fast rebuild\nsudo ./scripts/build.sh\nmake run\n```\n\nCommon changes:\n\n| Want to…                     | Do this                                                    |\n|------------------------------|------------------------------------------------------------|\n| Add a package                | add it to a list in `config/package-lists/*.list.chroot`   |\n| Bake a file into the system  | drop it under `config/includes.chroot/\u003cabsolute-path\u003e`     |\n| Run a build-time command     | add `config/hooks/normal/NNNN-name.hook.chroot` (0xxx range) |\n| Change the circle size       | edit `circle_diameter_fraction` in `branding/brand.json`   |\n| Change Debian suite / mirror | `BS_DISTRIBUTION=… BS_MIRROR=… sudo ./scripts/build.sh`    |\n\n### Layout\n\n```\nauto/config              # the whole `lb config` invocation — edit to reshape the image\nconfig/package-lists/    # what packages go in\nconfig/includes.chroot/  # files baked into the system (os-release, dconf, calamares, plymouth)\nconfig/includes.binary/  # files placed on the ISO (GRUB theme)\nconfig/hooks/normal/     # build-time hooks (authored hooks use the 0xxx range)\nbranding/                # brand.json + generate.py + generated assets\nscripts/                 # build.sh, run-qemu.sh, archive-iso.sh, bootstrap-deps.sh, lib.sh\ndist/                    # newest built ISO (gitignored)\narchive/                 # hash-stamped ISOs (gitignored) + MANIFEST.md (tracked)\n```\n\n**[`CLAUDE.md`](CLAUDE.md) is the architecture \u0026 contributor guide** — invariants,\nthe full hook order, the branding pipeline, and the gotchas that bit us. Read it\nbefore changing the image shape.\n\n`make help` lists every target.\n\n---\n\n## Known soft spots\n\n- **Root-on-ZFS via Calamares** ([`config/includes.chroot/etc/calamares/`](config/includes.chroot/etc/calamares))\n  is the least battle-tested piece and may need tuning against the exact\n  Calamares version in trixie. The live ZFS support is solid; the *guided install\n  onto ZFS* is what to validate on real hardware/VM.\n- The live ISO boots from squashfs, not ZFS — unavoidable for live media.\n\n## License\n\nMIT for the build tooling and branding (see [`LICENSE`](LICENSE)). A built ISO\nbundles Debian and many packages under their own licenses.\n\u003c/content\u003e\n\u003c/invoke\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffinnmglas%2Fbetriebssystem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffinnmglas%2Fbetriebssystem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffinnmglas%2Fbetriebssystem/lists"}