惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
J
Java Code Geeks
Blog — PlanetScale
Blog — PlanetScale
F
Fortinet All Blogs
腾讯CDC
大猫的无限游戏
大猫的无限游戏
Jina AI
Jina AI
WordPress大学
WordPress大学
雷峰网
雷峰网
小众软件
小众软件
D
DataBreaches.Net
V
Visual Studio Blog
博客园 - Franky
IT之家
IT之家
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog RSS Feed
博客园 - 聂微东
T
Tailwind CSS Blog
有赞技术团队
有赞技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Security Blog
Microsoft Security Blog
G
Google Developers Blog
云风的 BLOG
云风的 BLOG

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店
GitHub - jackthepunished/brokkr: a self-hosted distribute...
bhdr26k · 2026-05-17 · via Hacker News: Show HN

Brokkr — many hammers, one forge. A distributed build & compute grid, written in Rust.

A distributed build & compute grid, written in Rust. Many hammers. One forge.

Brokkr is a self-hosted, open-source compute platform that turns a fleet of Linux machines into a single, coherent grid for executing arbitrary jobs — builds, tests, ML training, transcoding, anything that fits inside a sandbox. It speaks the Bazel Remote Execution API v2 so existing tooling (bazel, buck2, pants, custom REAPI clients) works unchanged.

The interesting parts of distributed computing — content-addressable storage, hermetic sandboxing, scheduling, and consensus — are implemented from scratch as the project's educational core. There is no Docker, no runc, no embedded etcd, no third-party Raft.

Status: Phase 1 complete; Phases 2 and 3 in flight. brokk run executes commands end-to-end across a control plane + worker pair, with action-cache hits on the second invocation. The brokkr-sandbox runner isolates actions in their own user / mount / pid / network namespaces and a per-action cgroup-v2 with wall-clock + memory + pids + cpu limits and OOM detection (Phase 2, M1–M6). The CAS layer has gained rendezvous-hashing replica routing, a bloom-filtered find_missing_blobs fast path, a hot-LRU + warm tiered backend, quorum replication, reference-counted GC, peer repair, and tree materialisation (Phase 3, M0–M6a). Not yet production-ready.

What works today

# Terminal 1: control plane (gRPC server, in-memory CAS + action cache).
cargo run -p brokkr-control -- --listen 127.0.0.1:7878 --data-dir /tmp/brokkr

# Terminal 2: a worker that registers and pulls jobs.
cargo run -p brokkr-worker  -- --control http://127.0.0.1:7878

# Terminal 3: submit a job.
cargo run -p brokkr-cli -- run -- /bin/echo "hello world"
# → hello world
# → [brokk] exit=0 cache_hit=false

cargo run -p brokkr-cli -- run -- /bin/echo "hello world"
# → hello world
# → [brokk] exit=0 cache_hit=true   ← served from the action cache

Behind the scenes that one command:

  1. hashes a REAPI Action + Command and uploads them to the CAS,
  2. calls Execute, which streams a google.longrunning.Operation,
  3. dispatches a brokkr.v1.Job to the worker over a bidi gRPC stream,
  4. spawns the process on the worker, captures stdout/stderr,
  5. uploads the outputs back to the CAS,
  6. records the result in the action cache (only on exit_code == 0),
  7. returns an ExecuteResponse to the client.

Architecture

Brokkr is a workspace of nine crates with a strict DAG dependency graph.

                                         brokkr-cli (binary: brokk)
                                                │
                                                ▼
                                          brokkr-sdk
                                                │
                       ┌────────────────────────┴──────────────────────────┐
                       │                                                   │
                       ▼                                                   ▼
                brokkr-proto  ◀───  brokkr-common  ───▶  brokkr-control (binary: brokkr-control)
                                                                          │
                                                                          ├──▶ brokkr-cas
                                                                          │
                                                                          └──▶ brokkr-worker (binary: brokkr-worker)
                                                                                       │
                                                                                       └──▶ brokkr-sandbox
Crate Responsibility
brokkr-common Shared Digest newtype, error helpers, IDs. Universal dep, kept tiny.
brokkr-proto Vendored REAPI v2 protos + internal brokkr.v1 worker dispatch protocol.
brokkr-cas Cas trait, in-memory + redb-backed CAS, action cache.
brokkr-control Tonic gRPC server: REAPI services + scheduler + worker stream.
brokkr-worker Worker daemon: registers, pulls jobs, runs them, uploads outputs.
brokkr-sandbox Linux user/mount/pid/net namespaces + cgroup-v2 from scratch — no runc, no Docker (seccomp lands later in Phase 2).
brokkr-sdk Ergonomic Rust client for the REAPI surface.
brokkr-cli The brokk command-line interface.
brokkr-test-utils Internal test helpers (not published).

Engineering invariants

Brokkr aims for correctness > performance > ergonomics, in that order.

  • No unwrap / expect / panic! in library crates. Errors are propagated with ? against thiserror enums. Workspace-level clippy lints enforce this (see clippy.toml).
  • No unsafe without a // SAFETY: comment justifying invariants.
  • No external container runtimes. The sandbox is built directly on the kernel primitives; rolling our own is the educational point.
  • No off-the-shelf Raft. Phase 5 implements consensus from scratch.
  • Public APIs use bytes::Bytes, not Vec<u8>. All IDs are newtypes.
  • CI gate: cargo fmt --check, cargo clippy --workspace --all-targets -- -D warnings, cargo test --workspace on Linux x86_64 + aarch64.

Roadmap

The full plan lives in docs/plan.md. At a glance:

Phase Theme Status
0 Bootstrap done
1 First end-to-end slice done
2 Hermetic Linux sandboxing in progress (M1–M6 done; seccomp + M7+ remaining)
3 Distributed CAS (sharded) in progress (M0–M6a done; cold tier + FUSE next)
4 Scheduler + multi-tenancy planned
5 Consensus + HA (custom Raft) planned
6+ Web UI, FUSE inputs, RBE+ planned

Phase retrospectives are committed to docs/journal/ at the close of each phase.

Quick start (developer)

# One-time setup (Rust toolchain is pinned via rust-toolchain.toml).
rustup show

# Build everything.
cargo build --workspace

# Run the full test suite (gRPC end-to-end + sandbox smoke + CAS unit tests).
cargo test --workspace

# Lint (CI runs the same).
cargo fmt --all --check
cargo clippy --workspace --all-targets -- -D warnings

There is also a justfile with fmt, lint, test, ci, brokk, and phase recipes if you have just installed.

Documentation

  • docs/plan.md — vision, architecture, roadmap, engineering practice. Single source of truth.
  • docs/phase-2-plan.md — hermetic sandbox design (threat model, re-exec runner, per-subsystem milestones).
  • docs/phase-3-plan.md — distributed CAS design (HRW routing, tiered storage, replication, GC, FUSE).
  • docs/architecture/ — Architecture Decision Records.
  • docs/journal/ — phase retrospectives + per-milestone journals.
  • CHANGELOG.md — every notable change since bootstrap.
  • CLAUDE.md — operating manual when pair-programming with AI assistants on this repo.
  • CONTRIBUTING.md — how to propose changes.

Why "Brokkr"?

In Norse mythology, Brokkr is the dwarven smith who, with his brother Eitri, forges the gods' most prized artifacts in a single furnace — including Thor's hammer Mjölnir. The grid here is the forge; every worker is a hammer.

License

Apache-2.0. See LICENSE.