The directory for the TreeOS network.
Horizon is where lands find extensions, publish their own, and discover each other.
It is a directory, not a platform. It does not host your land. It does not run your code.
It stores manifests, files, and metadata so that treeos ext install knows where to look.
When a land registers, it sends its public key, domain, and a list of public trees. When a land publishes, it sends the extension files signed by that key. When a land installs, it downloads files and verifies the checksum. That is the entire relationship.
TreeOS is an open source operating system for AI agents. The kernel is free. The extensions are free. The goal is to spread the technology and the ideas behind it so anyone can build on them. Horizon exists to make that practical. A shared directory where packages accumulate, where operators can browse what exists, and where the ecosystem grows together.
Horizon is open source. The same code running this directory can run yours. Clone the repo, point it at a MongoDB instance, and you have your own directory with the same API, the same publishing pipeline, the same browsing interface.
Ideally, in the early days, we coordinate around one or a few directories so packages build together well. Extension A depends on extension B. If they are published to different directories that never sync, an operator installing A cannot find B. Coordination early means the ecosystem grows as one thing instead of fragmenting before it has mass.
As the network matures and the package base is stable, branching makes more sense. Specialized directories for specific domains. Regional directories for latency. Private directories for enterprise use. The protocol is the same everywhere.
A land can connect to multiple directories at the same time. Set HORIZON_URL
to a comma-separated list and the land registers with all of them, re-registers every hour,
and publishes to all of them. Each directory gets the same packages.
The CLI resolves extensions from the first configured directory. If you run your own Horizon alongside this one, your land's packages appear in both. Other operators pointing at either directory can install them.
Every publish request is signed with the land's Ed25519 private key. Horizon verifies the signature against the stored public key. Unregistered lands cannot publish. Name ownership belongs to the first publisher. Versions are immutable once published. Unpublished version numbers are burned forever.
Extensions run in the same process as the kernel. Review every extension before installing. The directory does not audit code. The operator always decides.
Source code on GitHub. Start a land. Build an extension. Publish it here. If something is broken, file an issue. If something is missing, build it.
treeos.ai for documentation.
npm install -g treeos for the CLI.
npx create-treeos my-land to start a land.