Back to projects

RIGSET CLI

Environment Configuration · Open SourcePlanned

Configure and manage your workstation, your way.

An open-source CLI to define, configure, and manage the state of a workstation in a declarative, secure, and predictable way.

Product, architecture, CLI experience, and v1 roadmap are defined. Implementation has not started yet.

Conceptual visual — not the final interface.
Conceptual visual of Rigset. It does not represent the final interface.

Conceptual visual — not the final interface.

01

The problem

Configuring a workstation is more than installing tools.

A workstation accumulates applications, command-line tools, runtimes, versions, configurations, files, services, and preferences. These resources may come from different origins, already exist before any management tool, and be distributed across distinct environments, such as Windows and WSL.

Reproducing or maintaining that environment is not just a matter of installing what is missing. It is necessary to understand what already exists, where it exists, how it was configured, and which changes can be made without overwriting decisions or resources that do not belong to the tool.

Rigset starts from this problem: allowing the user to describe how they want their workstation and bringing the current state closer to that desired state without treating the entire machine as something that can be changed freely.

Does the tool exist?
observation
Is it at the expected version?
state
Is it in the correct environment?
context
Has the configuration drifted?
drift
Who can change it?
authority
Has the result been proven?
evidence

The challenge is not to automate more changes. It is knowing which changes should happen — and which should not.

02

The proposal

Manage state, not just run installations.

Rigset treats workstation configuration as a reconciliation process. The user defines the desired state, Rigset observes the current reality, and, from that context, builds an explicit plan to bring the two closer together.

That difference, however, is not enough to authorize changes. Planning also considers where each resource exists, what Rigset is permitted to manage, its compatibility, and the available evidence before deciding what can be done.

The result is a flow in which observing, planning, executing, and verifying are distinct stages — and no change should happen simply because a difference was found.

  • Desired IntentHow does the user want the workstation to be?
  • Observed StateHow is it actually now?
  • Management AuthorityWhat is Rigset authorized to change?
  • CompatibilityIs this change valid in this environment?
  • EvidenceIs there enough evidence to trust this conclusion?
  1. Plan
  2. Apply
  3. Verify

Before any mutation, Rigset produces a deterministic, explainable plan with the necessary actions, conflicts, privileges, risks, and relevant known effects.

Every mutating operation must have a non-mutating planning path.

Rigset executes only the approved changes. If the reality encountered during execution materially invalidates the plan, it does not improvise a different intent.

An operation is only considered complete after the resulting state is observed again. A command finishing successfully is not, by itself, proof that the desired result was achieved.

Observe automatically. Change deliberately.

Rigset manages what the user entrusts to it, not the entire machine.

03

How Rigset understands a workstation

A machine can contain more than one environment.

A workstation does not need to be treated as a single homogeneous environment. A Windows machine, for example, can run tools natively and also have different distributions in WSL, each with its own versions, configurations, providers, and state.

Rigset represents these contexts as independent Target Environments within the same Machine. This makes it possible to observe, evaluate, and manage each environment without assuming that the state found in one of them also applies to the others.

Machine

  • Windows NativeGitNode.js
  • WSL UbuntuGitNode.js
  • WSL ArchGitNode.js

The same resource does not mean the same instance

For Rigset, Git is a Canonical Resource: the logical identity of the resource it knows. But each occurrence of that resource within a Target Environment is an independent Resource Instance.

CANONICAL RESOURCE + TARGET ENVIRONMENT = RESOURCE INSTANCE

Git on Windows ≠ Git on WSL Ubuntu

Same resource. Independent contexts and states.

Rigset first resolves where the resource should exist. Only then does it choose how that resource can be observed or managed in that environment.

  1. The user wants Node.js
  2. Which Target Environment?
  3. WSL Ubuntu
  4. Which strategy/provider is valid here?

04

Security before automation

Finding a difference does not mean having permission to fix it.

Rigset can discover software, configurations, and differences between the current and desired state without assuming that those resources belong to it.

Detecting a resource does not create ownership. Finding drift does not authorize overwriting a configuration. And removing something from Rigset’s configuration does not mean the corresponding software should be uninstalled.

Automation only proceeds when there is management authority compatible with the planned change and, when the action is consequential, explicit user consent.

  • DETECTIONOWNERSHIP
  • CAPTUREADOPTION
  • MISSINGPERMISSION TO REINSTALL
  • DRIFTPERMISSION TO OVERWRITE
  • UNMANAGEUNINSTALL
  • DIAGNOSISREMEDIATION AUTHORITY

Rigset manages only what has been entrusted to it

An already existing resource can be observed without being managed. For Rigset to assume responsibility over it, the user needs to perform an explicit adoption, preserving its origin and choosing which kinds of change will be authorized.

That authority can be limited. Allowing Rigset to manage a configuration, for example, does not automatically grant permission to install, update, or uninstall the resource.

  1. Existing resource
  2. Observe
  3. Explicit adoption
  4. Management Authority
  • configuration
  • update
  • uninstall

Automation removes repetition, not consequential decisions.

Rigset does not assume that every change on the workstation can be reverted transactionally. When an operation fails partially, it preserves what actually happened, observes the current state again, and uses that reality to build the next safe plan.

Accurate recovery is more important than magical rollback.

Rigset’s essential operation is local-first. Observing the workstation does not authorize transmitting its data, and the Core does not depend on telemetry. In v1, telemetry is zero by default.

Local-first
Observation ≠ Transmission
Core telemetry dependency
None
v1 telemetry
Zero by default

05

Proving the Core in v1

A small catalog to prove different problems.

Rigset’s v1 does not aim to support as many tools as possible. The initial catalog is deliberately small to validate, end to end, the Core’s most important properties.

Git, Node.js, and VS Code with extensions were chosen as Reference Resources because they present different management problems. Together, they exercise reconciliation, ownership, versions, PATH, multiple environments, desktop applications, and child resources without requiring a broad catalog before those abstractions have been proven.

Git

  • Reconciliation
  • Adoption
  • Ownership
  • Configuration
  • Idempotence

detect → install/adopt → configure → verify → second-run → NO-OP

Node.js

  • Runtime & versions
  • PATH
  • Project requirements
  • Compatibility
  • Target isolation

installed ≠ active ≠ project requirement

VS Code + Extensions

  • Desktop application
  • External CLI
  • Child resources
  • Preservation
  • Drift
Desktop app
├ CLI
└ Extensions
   ├ declared
   ├ missing
   └ external → preserve

Depth before breadth

Each catalog resource should expose only capabilities it actually has. Core abstractions should emerge from the differences found in these concrete cases — not from universal interfaces created in advance for hypothetical resources.

Support is demonstrated, not presumed.

Development will be done in vertical slices. Each slice starts with a claim about Rigset’s behavior, defines what evidence is needed to prove it, and implements only what is necessary to produce that proof.

06

Current status

Planned in depth. Not yet implemented.

Rigset does not yet have a functional implementation. The work so far has focused on defining the product, modeling the domain, establishing the security limits, and designing an implementation and validation strategy before starting the Core.

These definitions form the initial contract of v1, but some technical decisions remain deliberately open and will need to be resolved with evidence during implementation.

Defined

  • Product definition and positioning
  • Domain model
  • Core architecture and boundaries
  • Reconciliation lifecycle
  • Ownership and management authority model
  • CLI UX and behavior
  • Catalog and support strategy
  • Security, state, and verification model
  • Privacy by Design
  • Testing strategy and release gates
  • v1 roadmap
  • Handoff for implementation

Still under evaluation

Implementation language: Go or Rust

The language will be chosen before Core implementation. Until that decision is made, Go and Rust are not presented as technologies used in the project.

Next milestones

  1. Choose language

  2. Implement semantic Core

  3. First vertical slice with Git

  4. Expand proofs with Node.js and VS Code

  5. Validate support in disposable environments

  6. Hardening

  7. Public v1 release

Configure and manage your workstation, your way.

Back to projects