TacidOS
Developers

Development setup

Explore the development build

TacidOS is in active development. Its core, installer, Hyprland session, and probe tools exist in source. A supported download and hardware certification are still ahead. Explore the design here, or try the development environment if you have source access.

01

Build it and drive it

Use Linux with Rust 1.90 or later, a C toolchain, and Git. Cloning and the first Cargo build need network access to fetch the source and dependencies. The development demo uses a temporary machine directory and does not install TacidOS on your computer.

Clone and test
git clone https://github.com/TacidOS/TacidOS
cd TacidOS
cargo test --workspace
cargo build -p tacid-cli

The source snapshot dated 2026-10-10 reports 1655 tests. No model or Nix is needed for the development demo.

Run a development machine
./target/debug/tacid serve \
  --root /tmp/machine \
  --socket /tmp/tacid.sock

Leave this process running. Open a second terminal in the same checkout for the next step.

Ask it for something
./target/debug/tacid --socket /tmp/tacid.sock ask --diff install ripgrep
./target/debug/tacid --socket /tmp/tacid.sock ask enable openssh
./target/debug/tacid --socket /tmp/tacid.sock history
./target/debug/tacid --socket /tmp/tacid.sock undo

Inspect a package change, request a service change, read the history, and undo.tacid do is the same change with no model.tacid flash and tacid serial name a probe by vendor, product and serial.

tacidwhat those four commands print43da513
# Reversible, so the agent acts. The diff is the genome, not a summary of it.
$ tacid ask --diff install ripgrep
I will install ripgrep.

  + install ripgrep (cli)

  Reversible: system configuration to generation 1.

--- a/mind/agent.nix
+++ b/mind/agent.nix
@@ -5,4 +5,7 @@
 # transaction. Your own configuration belongs in owner.nix, which Tacid never writes.
 { ... }:
 {
+  tacid.packages.cli = [
+    "ripgrep"
+  ];
 }

# Exposure cannot be undone, so the agent stops and says exactly why.
$ tacid ask enable openssh
I will enable openssh.

  + enable the openssh service

  This cannot be fully undone:
  ! enabling openssh would make this machine reachable from the network

  Reversible: not by a generation rollback alone.

  Waiting for you. Approve it with the keeper, or say no and nothing happens.

# The hash-chained journal. The refusal is a record too.
$ tacid history
History:
     6  asked     the owner's policy asks before services.enable
     5  proposed  enable openssh (enable the openssh service)
     4  concluded applied as generation 2
     3  health    passed
     2  activated generation 2 (switch, from 1)
     1  allowed   every effect of this change can be undone
     0  proposed  install ripgrep (install ripgrep (cli))

# One command back to the previous generation.
$ tacid undo
I have undone the last change and switched the machine back.

# Provenance, including whether this machine built its own code.
$ tacid version
TacidOS 0.0.1 (dev)
  protocol   0.1
  autonomy   reversible
  generation 3
  self-built this machine is running code it built itself
Development recording from tacid-cli at revision 43da513on . This historical demo uses a simulated Nix builder and privileged operations. It shows the change flow, not a production installation.
02

What remains before a public release

Bootable image builds and an installer exist. A release also needs a supported download, a verified update channel, and evidence from real hardware. These are separate milestones.

For collaborators preparing installation media, see theISO build and USB boot-stick instructions for Windows, macOS and Linux. There is no supported public ISO download yet.

  1. Hardware validation

    The installation and generation lifecycle have run in emulated machines. Firmware, graphics, storage, networking, and recovery still need validation on supported hardware.

  2. A dependable release channel

    Signed updates and rollback have implementations and tests. The promotion pipeline, published artifacts, and complete end-to-end channel validation remain release work.

  3. The everyday experience

    The command line, terminal interface, Hyprland session, tacid-shell, andtacid flash / tacid serial exist in source. Daily-driving on hardware and a public image are still ahead.

The full plan, phase by phase, with every acceptance test →

03

Help build it

Read first

The manifesto for why, the decision records for what has already been settled, and the security model for the invariants that are not up for negotiation.

Then contribute

Contributions land through the same discipline the machine uses on itself: a written decision before a large change, an acceptance test for every work item, and no hard-coded colours anywhere.

Review security

Review the public threat model and test the stated boundaries. Security reports are handled through the process described in the security documentation.