Skip to main content

max / everycycle

A Linux system service for heterogeneous GPU compute. Owns the GPU fleet on a host and exposes one API to userspace, across vendors and generations.

git clone https://makenot.work/git/max/everycycle.git git clone git@ssh.makenot.work:max/everycycle.git
Name Size
/ crates/
/ dist/
/ docs/
/ scripts/
· .gitignore 118 B
· Cargo.toml 1.5 KB
· CONTRIBUTING.md 1.7 KB
· LICENSE 1.0 KB
· README.md 5.2 KB
· rust-toolchain.toml 86 B

README

EveryCycle

A Linux system service for heterogeneous GPU compute. everycycled owns the GPU fleet on a host, intermediates between the system and the silicon, and exposes a unified API to userspace clients, across vendors, generations, and the long tail of hardware whose vendors have moved on.

EveryCycle makes a box’s mix of GPUs behave as one programmable resource. The first reference client is OpenAI-compatible LLM serving; other workloads (vision, scientific compute, batch ML pipelines) follow.

Status: 0.0.x, pre-milestone-A1. The first concrete artifact is the roadmap.

Two co-equal goals

  1. The daemon and ecosystem. A Linux system service (everycycled) plus its clients, libraries, and operator tools. MIT-licensed, distributed via standard distro packaging. Open and permissive on principle.
  2. Reference appliances. Specific hardware designs that ship pre-configured with EveryCycle, sold and supported as products. Hardware revenue funds the open-source software work.

Wedge

  • Heterogeneity is the default. Cheap, mixed-generation, mixed-vendor silicon serves real workloads when the runtime above the kernels is honest about hardware. EveryCycle treats heterogeneity as the normal case, not the edge case.
  • Defensive curation. When vendors abandon old hardware, EveryCycle catches it. Old hardware that can still serve at all is a first-class supported tier. We watch for support discontinuations, fork upstreams when they drop too aggressively, and partner with OSS driver projects (nouveau, NVK, Mesa, RADV) to extend useful life past vendor end-of-life.

Category

EveryCycle is the GPU-compute analog of what PipeWire is to audio, NetworkManager is to networking, CUPS is to printing. A Linux system service that owns a device class and provides a stable API to userspace, replacing the current chaos in which every program directly drives the GPU via vendor SDKs.

Crates in this repo

Workspace members under crates/. None is published to crates.io: the unit of publication is this repo, so the crates version together and none of them is a stable dependency surface for outside code.

CrateRole
everycycle-runtimeInference runtime: model execution, heterogeneous layer placement, kernel dispatch
everycycle-schedulerContinuous batching, paged kv-cache, admission control, speculative-decode coordination
everycycle-orchestratorMulti-box control plane: capability map, request routing, fleet management
everycycle-halHardware abstraction: device enumeration, topology, memory pools, IPC primitives, telemetry
everycycle-apiThe stable client surface: request/event types, IPC framing, transport trait
everycycle-tuiOperator dashboard over structured telemetry
everycycle-appraiseProbe runner, canonical serializer, signer, and CLI for GPU appraisal reports
everycycle-bmc-agentAgent for the OpenBMC fork on EveryCycle boxes: telemetry, fan curves, power capping

Planned components

The shape the above is being built toward. These do not exist yet.

BinaryRole
everycycledThe system daemon. Audit, supervise, plan, dispatch.
everycycle-cliOperator CLI
everycycle-servingOpenAI-compatible HTTP/SSE server (first-party client)
everycycle-exec-{cuda,rocm,cpu,vulkan}Executor modules; sidecars or in-process depending on libc constraints
libeverycycle / everycycle-clientClient SDK (C ABI; Rust crate; other bindings to follow)

Platform

Linux only by design. macOS-native is not on the roadmap. Apple Silicon may eventually be supported via Asahi Linux as the project’s GPU stack matures.

A Fedora downstream is the reference target. Loosely, and deliberately so: it is where EveryCycle is built and probed first, not a supported-platform contract. The codebase is generic Linux and should work elsewhere; issues off the reference host are addressed best-effort. One caveat worth knowing up front, because it is the only one that bites a GPU project: an image-based host has no DKMS, so vendor kernel modules are baked into the image or layered as akmods rather than built on the machine. Executor isolation (in-process vs sidecar) is a per-executor choice driven by vendor SDK stability and crash blast-radius, not by libc compatibility.

Building

Standard Cargo. Rust 1.85+ (edition 2024). Built and tested on the reference host, aarch64 Linux.

cargo build --release

License

MIT. See LICENSE.

The software is permissively licensed by design. EveryCycle is open because the open-hardware ethos of the reference appliances is open, and because broad adoption is the wedge against opaque inference appliances. Revenue comes from building great machines and from custom integrations, not from license fees.

Status and contact

Early. Pre-milestone-A1, and documentation will be incomplete until it runs.

The repo is the release: it is public and clonable at makenot.work/git/max/everycycle, and there are no crates.io releases to depend on. Take it by cloning it or as a git dependency.

If you want to talk, the founder’s contact is in the commit history.