Run an AI-native OS that self-improves and federates agents
AI-native OS layer serving local LLM inference as an OpenAI-compatible system service, federating with peer nodes with no broker.
nightly-ead46e3-3345Add to Favorites
Why it matters
Deploy a local-first, federated operating system that treats inference as a native service, runs agentic workflows across devices from laptops to robots, and continuously improves itself through guardrail-gated auto-evolution while maintaining OpenAI API compatibility.
Outcomes
What it gets done
Serve LLM, vision, and speech to every app over a unified Model Bus without per-app API keys or model loading
Record task traces as recipes and replay them 90% faster with cached steps instead of repeated LLM calls
Federate peer nodes over direct WebSocket connections with Ed25519 signing and hash-verified guardrails
Auto-evolve the runtime by baselining performance snapshots and gating self-improvements through RSI-2 checks
Source
Get it from source
Spark does not host a copy of it.
Open sourceReports
Agent outcome reports
No reports yet
Overview
HARTOS
HART OS runs LLM inference as a local, OpenAI-compatible system service on your own hardware, automatically placing models on GPU or CPU by tier and federating with peer nodes for harder requests via PeerLink. Use it for a private, offline-capable local AI assistant with no subscription; it is built for everyday requests, not frontier-level questions that exceed local hardware capacity.
What it does
HART OS, Hevolve Hive Agentic Runtime, is an AI-native operating system layer that runs LLM inference as a local system service rather than an app-bundled feature: it serves an OpenAI-compatible API on your own hardware, federates directly with peer nodes with no broker, and picks the right model and device placement, GPU, CPU-offload, or CPU-only, automatically based on your hardware tier.
When to use - and when NOT to
Use it when you want a private, subscription-free local assistant that works with the network off, and can hand off harder questions to a peer node's bigger model when advertising is opted in, rather than needing every device to run a frontier-scale model itself. It explicitly is not for hard, frontier-level questions on constrained local hardware - a frontier model beats anything that fits on a laptop on those - it is built for the bulk of everyday requests that don't need that.
Inputs and outputs
The easiest path is the signed Nunba desktop installer for Windows, Linux, and Android, with a setup wizard that auto-selects a model for your hardware; running from source needs Python 3.10 or 3.11 specifically, since twenty-four dependency pins have no Python 3.12 wheel, and pip install -r requirements.txt pulls 191 pinned packages including torch and transformers. Setting an API key (OPENAI_API_KEY or GROQ_API_KEY, or none for local llama.cpp) and running python hart_intelligence_entry.py starts the server on port 6777, speaking the standard OpenAI Chat Completions protocol so existing OpenAI SDK, LangChain, LiteLLM, Aider, or Continue configurations point at it unchanged. Hardware detection and a VRAM manager decide device placement per model: a 10GB+ CUDA card unlocks speculative decoding, a 0.8B draft model plus verification, roughly 40% faster, 4-10GB runs the main model alone on GPU, and no CUDA falls back to a compact 0.8B/2B CPU model.
Integrations
Any OpenAI-API-compatible client, OpenAI SDK, LangChain, LiteLLM, Aider, Continue, via /v1/chat/completions; peer nodes over a direct peer-to-peer WebSocket protocol called PeerLink, with capability advertising and expert discovery letting a request be handed whole to a bigger peer model; and the Nunba desktop frontend. Node topology (flat, regional, central) is set via HEVOLVE_NODE_TIER and cryptographically enforced with Ed25519 certificates - a node claiming regional or central without valid proof silently falls back to flat. A vision model can take a screenshot and drive the local desktop through the usual action vocabulary via pyautogui, letting it operate a browser or any other GUI; a hart-copilot mode drops Claude Code into a writable checkout on a fresh branch, with the read-only Nix store enforcing that it structurally cannot modify the running system in place, so merging, OTA publishing, and release signing stay human. The project is explicit that its federated-learning code (Hebbian, Bayesian, and gradient training) is not open source - it ships as a compiled, encrypted, master-signed bundle from a private repository, with the runtime falling back to a stub when it's missing. The runtime itself is Apache 2.0 licensed.
Who it's for
Privacy-conscious users and developers who want a local, offline-capable AI assistant running on their own hardware with no subscription or vendor lock-in, with the option to federate with other nodes for harder requests instead of running everything on a single machine. The project is public alpha - the runtime, Model Bus, and channel adapters are in daily use, but APIs still move, and several hardware-dependent claims in its own verification docs are written but not yet run on real boards. Nodes that lend spare compute to others are paid, in principle, through a 90/9/1 revenue split, but the project states plainly that no payment has actually settled end to end yet, so lending compute today tests the mechanism rather than earning from it.
Source README
HART OS
Hevolve Hive Agentic Runtime
Democratic frontier intelligence with zero lock-in, fronted by an agentic OS.
An AI-native operating system. Models run on your own hardware, nodes federate directly with each other, and the API is OpenAI-compatible.
What it is?
An assistant that runs on your own machine, with no subscription, that works
with the wifi off. What you type stays on the device because there is nowhere
else for it to go, and you can watch the network to check.
8GB of RAM is enough, and on 8GB it is the modest version. Exactly what you
get at which spec is in Start it, because that is where it
matters.
On a hard question a frontier model beats anything that fits on a laptop. Most
of what people ask in a day is not that, and this is for the rest.
Ready today: Nunba for Windows, Linux and
Android. This repo is the runtime underneath it: it serves local inference as a
system service, federates peer to peer, and is drivable end to end from/v1/chat/completions or the hart CLI.
TL;DR; An AI that runs your computer, not a chatbot. Your hardware. BitTorrent-style. No middleman.
Start it
Just want to use it? Download
Nunba: one signed
installer, no Python, and a setup wizard that picks a model for your hardware.
Read the next section anyway, because it is what that wizard is deciding; the
clone-and-pip part further down is the only bit that assumes you are running
from source.
What your machine gets you. Two components decide. core/gpu_tier.py
classifies the hardware into a tier, and the frontend badge quotes its words
rather than paraphrasing. What actually loads, and onto which device, is the
VRAM manager's call: it keeps a budget per model, checks fit before anything
loads, and places each one gpu, cpu-offload or cpu-only
(integrations/service_tools/vram_manager.py). A 10GB+ CUDA card
unlocks speculative decoding, a 0.8B draft answering while the main model
verifies, which the tier text puts at roughly 40% faster replies. Between 4
and 10GB the GPU runs the main model alone. With no CUDA at all, chat runs on
CPU with a compact model as the main, 0.8B or 2B class, and the model catalog
treats main as a slot any GGUF can take
(integrations/service_tools/model_catalog.py), so swapping the model is
configuration rather than surgery. A local 7B wants 16GB of RAM and a GPU
(security/system_requirements.py, FULL tier).
None of that caps what a node can answer, which is the part worth
understanding before judging it by its hardware. The agent daemon runs the
same on any tier, and a turn the local model should not take can be handed
whole to a peer whose model is bigger. Both halves of that are shipped and
attached at boot, hive_capability_advertiser announcing andhive_expert_discovery registering what it hears, with the peer's model
taking the turn directly rather than reviewing a draft. Advertising is opt-in
per node (HEVOLVE_HIVE_ADVERTISE=1 and a public endpoint), so on a network
where nobody has opted in it falls through to local. A modest machine is a
small model plus a route to a larger one, not a small model on its own.
The server starts in seconds. The install does not. requirements.txt pins
191 packages and pulls torch, torchvision, transformers, onnxruntime and
scipy, so budget a few minutes and a few GB on a first run.
Use Python 3.10 or 3.11, not a newer one. Twenty-four pins have no
cp312 wheel, among them pandas, scipy, PyYAML, onnxruntime, grpcio and
tokenizers, so on 3.12 the install stops with "No matching distribution
found", which reads like a broken repository rather than a version mismatch.
Every one of them has a current release that would work;
issue #92 carries the lowest
compatible version for each.
git clone https://github.com/hertz-ai/HARTOS.git && cd HARTOS
python3.10 -m venv venv && source venv/bin/activate # Windows: venv\Scripts\activate.bat
pip install -r requirements.txt
echo "OPENAI_API_KEY=sk-..." > .env # or GROQ_API_KEY, or none for local llama.cpp
python hart_intelligence_entry.py # listens on :6777
It speaks the OpenAI protocol, so any OpenAI SDK, LangChain, LiteLLM, Aider or
Continue setup points at it unchanged:
curl -X POST http://localhost:6777/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model": "hevolve", "messages": [{"role": "user", "content": "Hello"}]}'
Live demo · Quickstart · Nunba desktop
What "AI-native" actually means here
Most software described as AI-powered ships an assistant: a separate app,
usually talking to somebody else's server, that can drive a few functions.
Remove the assistant and everything underneath works as before.
Here inference is a service the system provides, the way it provides a
filesystem. An application does not bundle a model or hold an API key, it asks
the OS over the Model Bus, and the OS decides which model answers and runs it
locally where it can. Ten apps on one machine do not each load their own copy.
One consequence is worth stating plainly: every device becomes the same
target. The runtime driving a laptop is the runtime driving a robot, so a
robot's AI access is just another Model Bus call, and code written against:6777/v1/chat/completions runs unchanged on both.
It is one Python codebase that federates over PeerLink, a direct peer-to-peer
WebSocket with no broker in the middle. Two things vary per node and they are
independent of each other. What a node can do is a capability tier read off
its hardware. Where a node sits in the network is a topology mode set byHEVOLVE_NODE_TIER, and only flat is self-declared. regional needs a
certificate issued by central, central needs the Ed25519 master private key,
and a node claiming either without the proof falls back to flat and logs why
(security/key_delegation.py:103).
A boot-time guardrail hash re-checked every 300 seconds, plus Ed25519 release
signing, keep humans in control. Nodes improve themselves from their own use,
locally, and that is a toggle you can switch off, because an operating system
that describes itself as alive should come with an off switch.
Then why does it ship a Dockerfile
Because it is one source tree packaged three ways, and the topology mode picks
which. In flat it rides inside the Nunba bundle and runs as an ordinary app
on Windows, macOS or Linux. As regional or central it runs standalone in
Docker, which is how the nodes that other nodes federate with get deployed. As
HART OS it is built with Nix and boots on the metal, hosting the same runtime
the other two forms run. Nothing is reimplemented per form, and only the last
one is the OS claim.
Nix is worth naming because most of what people mean by "immutable OS" comes
from there rather than from us. Generations, one-command rollback, a read-only
store: all NixOS, and plain NixOS gives you all three today if that is the only
thing you want. What sits on top here is the update pipeline, BUILD through
TEST, AUDIT, BENCHMARK, SIGN, CANARY and DEPLOY, where the canary reverts the
generation by itself when health regresses and the signing step needs a master
key that a human holds and the AI cannot reach
(nixos/modules/hart-ota.nix). The inheritance is also why the copilot
boundary below is structural instead of a promise. The store is read only, so
a coding agent cannot rewrite the running system in place however much it
would like to.
If you think "OS" is doing more work in that name than the code earns, that is
a reasonable suspicion and Is it an OS? takes it
seriously. The compositor does build with Smithay linked, green in CI on
2026-07-26. There are nineteen nixosTest VM checks covering initrd, paint
watchdogs, tier drops and the recovery TTY, and that page is blunt that they
are defined but not passing: the suite is manual-dispatch only and has no
green run. Writing an initrd test still tells you what kind of project this
is. It does not tell you the boot works, and the page says so rather than
letting you assume it.
Two things people miss
It can see and drive its own desktop. A vision model takes a screenshot
and the usual action vocabulary drives the real machine through pyautogui, so
it can operate a browser or any other GUI. The seeing happens on the device
(integrations/vlm/local_computer_tool.py).
Claude Code runs as the node's own copilot. hart-copilot drops you into
Claude Code inside a writable checkout on a fresh branch, with the boundary
enforced by the filesystem rather than by a prompt: the nix store is read
only, so it structurally cannot modify the running system in place, and
nothing in that path touches main. Merging, OTA publishing and release
signing stay human. Details and the current limits are in
the design note. The
module is built and flake-eval green, and hart hive connect now exists, so
the session can register with the hive dispatcher and take work. What is
still missing: no live dispatcher has handed it a task yet, and the login
does not survive a reboot on the live ISO.
Where it differs from the OS you are running now
Windows and macOS both run models on-device now, so this is not the old story
about local versus cloud. Copilot+ uses the NPU and Apple Intelligence uses the
Neural Engine. What differs is who the model belongs to, what an application is
allowed to ask for, and whether the thing keeps learning.
Those two ship a finished artifact. It runs on your silicon, but it was trained
somewhere you had no part in, it arrives the same for everyone, and your use of
it improves the vendor's next release rather than your machine. Here a node
improves from its own use, and what it learns is gossiped to peers and
aggregated periodically (federated_aggregator.py) instead of flowing to one
owner, so the intelligence is built by the machines running it. That is the
democratic part, and it is a direction rather than a finished claim: what
aggregates today is real, but the learning code itself is not open, which
Why it exists and the section after it deal with squarely.
| HART OS | Windows | macOS | Linux | |
|---|---|---|---|---|
| Any app can ask the OS for inference | yes, Model Bus on :6777 |
vendor assistant only | Apple Intelligence is Apple's | no, each app brings its own |
| Model chosen from the hardware | core/gpu_tier.py, vram_manager.py |
fixed | fixed | manual |
| Runs Windows, macOS, Linux and Android apps | Wine, Darling, Flatpak/Snap/AppImage/Nix, Waydroid (app_installer.py) |
Windows, Linux via WSL | macOS, others need a VM | Linux, Windows via Wine |
| Finds your other devices and hands over a turn | compute_mesh_service.py, LAN beacon :6780 |
no | Continuity moves tasks, not inference | no |
| Federates with other people's nodes | PeerLink, no broker | no | no | no |
| Consent is a system primitive | append-only, JWT-authed, fanned out to your devices (consent_api.py) |
per-app prompts | per-app prompts | per-app |
| Learns a task once and replays it | create_recipe.py / reuse_recipe.py |
no | no | no |
| Updates are generations you can roll back | NixOS underneath | in-place, System Restore is partial | sealed volume, no generation rollback | NixOS and Silverblue yes, most distros no |
Three of those rows are more flattering than they should be. The mesh hands a
peer a whole turn, it does not split one model across machines, so if you came
here looking for parallax-style layer sharding it is not that. A hive of nodes
coordinating on a goal is not the same thing as one larger model, and a
question that needs frontier capability still wants a frontier model. And a
recipe is learned from a real run, which means a wrong recipe replays wrongly
until a person corrects it, and nothing else in the loop will catch it.
Full capability map → covers every subsystem with the
file that implements it: agent runtime, auto-evolve, federation, 31 channel
adapters, 16 providers, security, economics, the API surface, and how it
compares to the agent frameworks rather than to operating systems.
HART is the bare engine in this repo, listening on
:6777. There is no
PyPI package yet, so install from source as above. HART OS is the full
AI-native OS that boots on a laptop, server, phone or edge node.
Nunba is the consumer app, one
signed client across Windows, macOS and Linux.
Why it exists
A handful of organisations own the most capable AI, and with it the refusal
policy, the price, and the logs of everything you type. None of that follows
from any law of nature. It follows from who paid for the cluster.
Learning here is incremental and gossiped, accumulated on consumer hardware as
nodes get used, with federated_aggregator.py doing periodic aggregation
rather than a tight all-reduce. Nobody blocks on anybody else's gradient, so
the machines do not need to sit in one building. Inference runs on llama.cpp
with GGUF weights, so CUDA, ROCm, Metal, Vulkan and plain CPU are all real
paths and nothing in the delivery path needs one vendor's silicon.
The aim, which is a bet and not a shipped feature: an internet of intelligence
that nobody owns.
The part we are not comfortable with
The learning is not open. Hebbian, Bayesian and gradient code lives in a
private repo called HevolveAI, and it does not ship as source you could read:
it is compiled, encrypted and master-signed, and this runtime loads that bundle
and falls back to a stub when it is missing. You can see the seam insecurity/native_hive_loader.py. Worth being exact about, since "closed" here
means closed rather than merely inconvenient to obtain.
The reason is the boring one. It is the piece a funded competitor would copy
first, and it is how the rest of this gets paid for. That is a normal way to
run a company and an awkward thing to put next to an argument about nobody
owning the intelligence. Both are true and we would rather say so up here than
have you work it out from a table row halfway down.
The narrower claims hold and you can test them yourself. llama.cpp and GGUF
run on CUDA, ROCm, Metal, Vulkan and bare CPU, so no vendor owns the silicon
you need. Apache 2.0 means a fork costs you an afternoon. What we cannot say
without a caveat is that nobody owns the intelligence, because today somebody
owns a piece of it, and it is us.
Open problem 9 is that argument, including the case that
we are wrong to ship it this way at all.
Where to start if you want to help
Status: public alpha. The runtime, the Model Bus and the channel adapters
are in daily use. APIs still move.
If you want something concrete, the
good first issue
and help wanted
labels are real gaps rather than manufactured onboarding tasks. Each says what
is wrong, why it matters, and what would count as done. A couple carry the
measurement that found the bug, and one names a hypothesis we already ruled
out so nobody spends a Saturday re-testing it. Setup is in
CONTRIBUTING.md.
The gap we cannot close ourselves is hardware. Twelve claims in
VERIFICATION.md are written and never run on the metal:
whether the Pi image boots, whether GPIO toggles from the agent, what
tokens/sec the 2B actually manages on a Pi 4, whether two machines owned by two
people can borrow compute from each other and settle what they owe. CI has no
boards. If you have one, an evening with it settles a row, and a failure is as
useful as a pass.
If you would rather argue than patch, start at
Open problems. Ten things we have not solved, each
with the code implementing today's inadequate answer: what convergence can
mean when no node can see the population, whether a system that rewrites
itself can still be verified, and why a turn escalates itself to a better
model automatically but can never decide on its own that a problem deserves an
hour and three machines. Telling us a framing there is wrong is worth more to
us than a patch.
If you lend it compute
A node with spare capacity can serve turns for nodes that do not have it. What
the lender gets, in code rather than in principle:
integrations/agent_engine/revenue_aggregator.py:26 splits gross revenue
90/9/1. Ninety percent to the pool that pays the people who ran the work, nine
to infrastructure, one to central. The same ninety holds for apps: creators keep
90% of every Spark their app earns (app_marketplace.py:7).
Three things earn: the API, ads, and agents completing work. A provider is paid
out of what the network takes in rather than out of a subscription someone else
pays, which is the difference between this and renting your GPU to a company.
compute_borrowing.py is the mechanism: peers advertise idle capacity, a node
under pressure borrows, and the work is accounted against the lender.
Contribution is scored by participation, not by hardware. A Pi and a GPU rack
carry the same vote weight at equal participation, log1p(interactions) with no
tier multiplier (federated_aggregator.py:642), so lending a small machine is
not a rounding error.
What has not happened yet. No payment has settled end to end. The aggregator
currently sums the API and ad legs; agent work earns into Spark but the
cross-node collective-earning slice is deliberately inert and says so in its own
first line (collective_earning.py: "Neither broadcasts, remits, nor mutates
anything"). The split is constants, the borrowing path is written, and nobody
has been paid through any of it.
So anyone lending compute today is helping prove the mechanism, not collecting
on it. That is row 8, and it wants two machines owned by two
people.
Details at provider join.
Documentation
| Section | What's in it |
|---|---|
| Capabilities | Every subsystem, with the file that implements it |
| Open problems | Ten things we have not solved |
| Verification | What is proven, what is not, and how to settle a row |
| Contributing | Setup, where help is wanted, what we will not merge |
| Quickstart | Install to first agent |
| Architecture | Topology, PeerLink, draft-first dispatch, federation |
| API | /chat, OpenAI-compatible, 195+ endpoints |
| Provider join | Lend compute, host a region |
FAQ
Common questions
Discussion
Questions & comments · 0
Sign In Sign in to leave a comment.