TacidOS
DevelopersGitHub

Get started

Start with the system. Build toward the release.

TacidOS is in active development. Its core and installer have run under software emulation; a supported, everyday desktop release is 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-09-05 reports 898 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. The recorded demo below shows the original development flow.

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.

  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 and terminal interface exist. The graphical shell and device/probe tools are still planned. Follow the roadmap for the scope and acceptance criteria.

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.

Attack it

The security model is public and invites attack. The prompt-injection corpus is a continuous-integration gate, and a case that gets past it is the most useful thing you can send.