Skip to main content

max / everycycle

Initial EveryCycle workspace Cargo workspace with stub crates for the seven planned components: runtime, scheduler, orchestrator, serving, tui, hal, bmc-agent. Each crate is a doc comment shell; factoring decisions defer to Phase 0. Includes README, MIT LICENSE, CONTRIBUTING, and docs/architecture.md (the runtime sketch).
Author: Max J. <87768334+MaxJMath@users.noreply.github.com> · 2026-05-23 02:08 UTC
Commit: 63ceefb80d330b3fda3d64025ebfd86642a816ab
20 files changed, +442 insertions, -0 deletions
A .gitignore +5
@@ -1,0 +1,5 @@
1 + /target
2 + Cargo.lock
3 + .DS_Store
4 + *.swp
5 + *.swo
@@ -1,0 +1,33 @@
1 + # Contributing to EveryCycle
2 +
3 + EveryCycle is in `0.0.x`. Patterns documented here will grow as the codebase does. For now:
4 +
5 + ## Conventions
6 +
7 + - Edition 2024, MSRV `1.85`.
8 + - Workspace dependencies are declared once in the root `Cargo.toml`. Member crates use `dep.workspace = true`.
9 + - `cargo fmt` and `cargo clippy --all-targets --all-features -- -D warnings` clean before push.
10 + - Commit messages: concise, imperative tense, no emoji.
11 + - No PRs. Patches sent via `git send-email` to the founder, or pushed directly by the lead fellow and area owners once those roles exist.
12 +
13 + ## Documentation
14 +
15 + - Per-project doc files follow Make Creative's [markdown standards](../../../code/_meta/docs/markdown_standards.md) (private link; the convention summary is below).
16 + - Architecture lives in `docs/architecture.md`.
17 + - A `CHANGELOG.md` will appear once there are user-visible changes worth recording. Until then, the git log is the record.
18 +
19 + ## Crate boundaries
20 +
21 + When in doubt about which crate a piece of code belongs in, default to `everycycle-runtime` and refactor outward when the boundary becomes obvious. Premature crate splitting is more painful than late crate splitting.
22 +
23 + ## Tests
24 +
25 + Phase 0 lands with unit tests for any non-trivial logic and integration tests that exercise the HTTP surface. Property-based tests (`proptest`) preferred for any decoder, parser, or invariant-bearing structure. No mocked GPUs — integration tests either run against a real device or are gated behind a feature flag.
26 +
27 + ## What this file does not cover yet
28 +
29 + - Release process (no releases yet).
30 + - Security disclosure policy (no security surface to disclose against yet).
31 + - Public contributor onboarding (project is unlisted; onboarding is in-person).
32 +
33 + These appear when they're needed.
A Cargo.toml +28
@@ -1,0 +1,28 @@
1 + [workspace]
2 + resolver = "3"
3 + members = [
4 + "crates/runtime",
5 + "crates/scheduler",
6 + "crates/orchestrator",
7 + "crates/serving",
8 + "crates/tui",
9 + "crates/hal",
10 + "crates/bmc-agent",
11 + ]
12 +
13 + [workspace.package]
14 + version = "0.0.1"
15 + edition = "2024"
16 + rust-version = "1.85"
17 + license = "MIT"
18 + authors = ["Make Creative, LLC"]
19 + repository = "https://git.sr.ht/~maxmj/everycycle"
20 + homepage = "https://git.sr.ht/~maxmj/everycycle"
21 +
22 + [workspace.lints.rust]
23 + unused = "warn"
24 + unreachable_pub = "warn"
25 +
26 + [workspace.lints.clippy]
27 + pedantic = { level = "warn", priority = -1 }
28 + module_name_repetitions = "allow"
A LICENSE +21
@@ -1,0 +1,21 @@
1 + MIT License
2 +
3 + Copyright (c) 2026 Make Creative, LLC
4 +
5 + Permission is hereby granted, free of charge, to any person obtaining a copy
6 + of this software and associated documentation files (the "Software"), to deal
7 + in the Software without restriction, including without limitation the rights
8 + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 + copies of the Software, and to permit persons to whom the Software is
10 + furnished to do so, subject to the following conditions:
11 +
12 + The above copyright notice and this permission notice shall be included in all
13 + copies or substantial portions of the Software.
14 +
15 + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 + SOFTWARE.
A README.md +40
@@ -1,0 +1,40 @@
1 + # EveryCycle
2 +
3 + Rust inference runtime for heterogeneous and often-cheap GPU hardware.
4 +
5 + EveryCycle extracts every clock cycle out of whatever silicon is in the box — current datacenter cards, used consumer GPUs, mixed-generation fleets, CPU offload, NVMe kv-cache spillover. It is the software that runs on the inference appliances built by a hardware operation under Make Creative.
6 +
7 + Status: `0.0.x`, pre-Phase-0. The first concrete artifact is the [architecture sketch](docs/architecture.md).
8 +
9 + ## Crates
10 +
11 + | Crate | Role |
12 + |------|------|
13 + | `everycycle-runtime` | Model execution, heterogeneous layer placement, quantization-aware kernel dispatch |
14 + | `everycycle-scheduler` | Continuous batching, paged kv-cache, admission control, speculative-decode coordination |
15 + | `everycycle-orchestrator` | Multi-box control plane: capability map, request routing, fleet management |
16 + | `everycycle-serving` | HTTP API surface (OpenAI-compatible), streaming |
17 + | `everycycle-tui` | Operator dashboard, structured telemetry views |
18 + | `everycycle-hal` | Hardware abstraction: device enumeration, topology, memory pools, telemetry |
19 + | `everycycle-bmc-agent` | Rust agent for the OpenBMC fork on our boxes; structured telemetry, fan curves, power capping |
20 +
21 + The exact factoring is a Phase 0 decision; the names are decided.
22 +
23 + ## Building
24 +
25 + Standard Cargo. Rust 1.85+ (edition 2024).
26 +
27 + ```
28 + cargo build
29 + cargo test
30 + ```
31 +
32 + ## License
33 +
34 + MIT. See [LICENSE](LICENSE).
35 +
36 + The software is permissively licensed by design. EveryCycle is open because the open-hardware ethos of the boxes 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.
37 +
38 + ## Status and contact
39 +
40 + Pre-public. The project is unlisted on SourceHut until the Phase 0 demo runs. Documentation will be incomplete until then. If you have somehow found this and want to talk, the founder's contact is in the commit history.
@@ -1,0 +1,12 @@
1 + [package]
2 + name = "everycycle-bmc-agent"
3 + description = "Rust agent for the OpenBMC fork on EveryCycle boxes: structured telemetry, fan curves, power capping."
4 + version.workspace = true
5 + edition.workspace = true
6 + rust-version.workspace = true
7 + license.workspace = true
8 + authors.workspace = true
9 + repository.workspace = true
10 +
11 + [lints]
12 + workspace = true
@@ -1,0 +1,9 @@
1 + //! EveryCycle BMC agent.
2 + //!
3 + //! Runs on the box's baseboard management controller (an OpenBMC fork on
4 + //! Aspeed AST2600-class hardware). Exposes structured telemetry over gRPC to
5 + //! the host runtime, drives fan curves and power capping from a thermal
6 + //! model, sequences PSU and GPU power events.
7 + //!
8 + //! Separate binary from the host runtime — different security boundary,
9 + //! different reliability constraints, different update cadence.
@@ -1,0 +1,12 @@
1 + [package]
2 + name = "everycycle-hal"
3 + description = "Hardware abstraction: device enumeration, topology, memory pools, IPC primitives, telemetry."
4 + version.workspace = true
5 + edition.workspace = true
6 + rust-version.workspace = true
7 + license.workspace = true
8 + authors.workspace = true
9 + repository.workspace = true
10 +
11 + [lints]
12 + workspace = true
@@ -1,0 +1,6 @@
1 + //! EveryCycle hardware abstraction layer.
2 + //!
3 + //! Device enumeration across CUDA, ROCm, Vulkan, and CPU. PCIe topology and
4 + //! NVLink (where present). Memory pool allocation. Shared-memory and lockless
5 + //! IPC primitives between the runtime, scheduler, and serving processes.
6 + //! Power and thermal telemetry, sourced from drivers and from the BMC.
@@ -1,0 +1,12 @@
1 + [package]
2 + name = "everycycle-orchestrator"
3 + description = "Multi-box control plane: capability map, request routing, fleet management."
4 + version.workspace = true
5 + edition.workspace = true
6 + rust-version.workspace = true
7 + license.workspace = true
8 + authors.workspace = true
9 + repository.workspace = true
10 +
11 + [lints]
12 + workspace = true
@@ -1,0 +1,5 @@
1 + //! EveryCycle multi-box orchestrator.
2 + //!
3 + //! Maintains the fleet capability map (which model is warm where, queue depth,
4 + //! thermal state) and routes requests to the box that should serve them.
5 + //! Handles rolling model loads and box health.
@@ -1,0 +1,12 @@
1 + [package]
2 + name = "everycycle-runtime"
3 + description = "EveryCycle inference runtime: model execution, heterogeneous layer placement, kernel dispatch."
4 + version.workspace = true
5 + edition.workspace = true
6 + rust-version.workspace = true
7 + license.workspace = true
8 + authors.workspace = true
9 + repository.workspace = true
10 +
11 + [lints]
12 + workspace = true