# Rivet Documentation ## Instructions for AI Agents - For clean Markdown of any page, append `.md` to the page URL - For section-specific indexes, append `/llms.txt` to any section URL - For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://rivet.chrisboulton.com/_mcp/server ## Docs - [What is Rivet?](https://rivet.chrisboulton.com/overview.md): Configuration management for Linux hosts: compile a self-contained bundle, apply it, and recover cleanly from interruptions. - [How it works](https://rivet.chrisboulton.com/how-it-works.md): Facts, compilation, bundles, the runner, notifications, and the journal. - [Install from source](https://rivet.chrisboulton.com/getting-started/installation.md): Build the rivet binary with Cargo. - [Your first configuration](https://rivet.chrisboulton.com/getting-started/quickstart.md): Create a directory and a file, preview the change, apply it, and repair drift. - [Manage an application](https://rivet.chrisboulton.com/getting-started/application.md): Ship a systemd unit and a validated config file, and restart the service when the config changes. - [Choosing how to run Rivet](https://rivet.chrisboulton.com/operations/modes.md): Compare local, SSH, source-release, and compile-service deployments. - [SSH from a controller](https://rivet.chrisboulton.com/operations/ssh.md): Collect facts, plan, and apply on remote hosts from a Mac or Linux machine. - [Releases and environments](https://rivet.chrisboulton.com/operations/distribution.md): Publish immutable configuration snapshots to S3, GCS, or a directory, and promote them through environments. - [Agent runs](https://rivet.chrisboulton.com/operations/agent.md): Configure rivet run to pull from a source release or the compile service, and run offline. - [Compile service](https://rivet.chrisboulton.com/operations/compile-service.md): Run rivet-server to authenticate hosts and compile their catalogs over HTTPS. - [Scheduling agent runs](https://rivet.chrisboulton.com/operations/scheduling.md): Run rivet run from a systemd timer. - [Modules](https://rivet.chrisboulton.com/guides/modules.md): Compose isolated configuration directories through typed arguments and explicit outputs. - [Remote module sources](https://rivet.chrisboulton.com/guides/remote-modules.md): Pin modules from Git or tar archives, fetch them with rivet init, and compile offline. - [YAML inputs and data hierarchies](https://rivet.chrisboulton.com/guides/data-hierarchy.md): Layer YAML or JSON values by environment and host, with merges, removals, explanations, and SOPS. - [Manifest and module tests](https://rivet.chrisboulton.com/guides/testing.md): Compile isolated scenarios and check resources, outputs, content, and relationships. - [Syntax and source files](https://rivet.chrisboulton.com/language/syntax.md): The supported HCL subset and configuration loading rules. - [Values and expressions](https://rivet.chrisboulton.com/language/expressions.md): Strict values, operators, for expressions, splats, references, and fact traversal. - [Variables, locals, and outputs](https://rivet.chrisboulton.com/language/variables-and-outputs.md): Typed inputs, collection values, isolated module arguments, and catalog outputs. - [Templates and heredocs](https://rivet.chrisboulton.com/language/templates.md): Render configuration text with interpolation, conditionals, loops, and confined files. - [Functions](https://rivet.chrisboulton.com/language/functions.md): Built-in functions, plugin functions, sensitivity, and limits. - [Numeric functions](https://rivet.chrisboulton.com/language/functions/numeric.md): Signatures, behavior, examples, and Rivet compatibility boundaries. - [String functions](https://rivet.chrisboulton.com/language/functions/strings.md): Signatures, behavior, examples, and Rivet compatibility boundaries. - [Collection functions](https://rivet.chrisboulton.com/language/functions/collections.md): Signatures, behavior, examples, and Rivet compatibility boundaries. - [Encoding functions](https://rivet.chrisboulton.com/language/functions/encoding.md): Signatures, behavior, examples, and Rivet compatibility boundaries. - [Filesystem functions](https://rivet.chrisboulton.com/language/functions/filesystem.md): Signatures, behavior, examples, and Rivet compatibility boundaries. - [Date and time functions](https://rivet.chrisboulton.com/language/functions/datetime.md): Signatures, behavior, examples, and Rivet compatibility boundaries. - [Hash and crypto functions](https://rivet.chrisboulton.com/language/functions/hash.md): Signatures, behavior, examples, and Rivet compatibility boundaries. - [IP network functions](https://rivet.chrisboulton.com/language/functions/network.md): Signatures, behavior, examples, and Rivet compatibility boundaries. - [Conversion, errors, and sensitivity](https://rivet.chrisboulton.com/language/functions/conversion.md): Signatures, behavior, examples, and Rivet compatibility boundaries. - [Resource and module expansion](https://rivet.chrisboulton.com/language/expansion.md): Stable named keys, numbered slots, and compile-time iteration values. - [Resources and relationships](https://rivet.chrisboulton.com/language/relationships.md): Order work and deliver refreshes after verified changes. - [Metadata and sensitivity](https://rivet.chrisboulton.com/language/metadata.md): Common policy applies inside one meta block on every resource. - [Facts and custom collectors](https://rivet.chrisboulton.com/language/facts.md): Structured host inventory, static HCL paths, and custom JSON facts. - [Trusted identity and claims](https://rivet.chrisboulton.com/language/trusted-facts.md): Classify nodes using certificate or JWT claims verified by the compile service. - [Assets and cloud sources](https://rivet.chrisboulton.com/language/assets.md): Acquire content at compilation and ship verified bytes in the bundle. - [Resource conventions](https://rivet.chrisboulton.com/resources/conventions.md): Defaults, unmanaged properties, strict types, and exported attributes. - [File](https://rivet.chrisboulton.com/resources/file.md): Files, directories, symlinks, ownership, safe replacement, and protected backups. - [Package](https://rivet.chrisboulton.com/resources/package.md): Apt repository packages and confined, bundled dpkg archives. - [User](https://rivet.chrisboulton.com/resources/user.md): Local user accounts, passwords, expiry, and home directories. - [Group](https://rivet.chrisboulton.com/resources/group.md): Manage local group existence and GIDs; order account removal deliberately. - [Group membership](https://rivet.chrisboulton.com/resources/group-membership.md): Manage supplementary group entries with additive or exclusive ownership. - [Exec](https://rivet.chrisboulton.com/resources/exec.md): Execute explicit actions with guards, bounded processes, and optional refresh policy. - [Service](https://rivet.chrisboulton.com/resources/service.md): Select a service backend and manage activity, supported properties, and durable refresh actions. - [Timer](https://rivet.chrisboulton.com/resources/timer.md): Manage a systemd timer and its paired oneshot service. - [SSH authorized key](https://rivet.chrisboulton.com/resources/ssh-key.md): Manage one public-key entry while preserving unrelated authorization text. - [Mount](https://rivet.chrisboulton.com/resources/mount.md): Converge current mount state and independently manage its fstab entry. - [CLI](https://rivet.chrisboulton.com/reference/cli.md): Every rivet command, flag, and exit code. - [Plan, apply, and reports](https://rivet.chrisboulton.com/reference/plan-and-apply.md): What plan predicts, how apply proceeds, and what each report status means. - [Catalogs and bundles](https://rivet.chrisboulton.com/reference/bundles.md): What a bundle contains, how it is validated, and how to keep it confidential. - [Recovery and the journal](https://rivet.chrisboulton.com/reference/recovery.md): How Rivet records in-flight work, recovers from interruptions, and keeps history. - [Capabilities](https://rivet.chrisboulton.com/reference/capabilities.md): How hosts advertise which resources they support, and what each capability enables. - [Limitations](https://rivet.chrisboulton.com/reference/limitations.md): What Rivet does not support yet, and design choices to be aware of. - [Troubleshooting](https://rivet.chrisboulton.com/reference/troubleshooting.md): Common errors and refusals, and what to check. - [Architecture](https://rivet.chrisboulton.com/contributing/architecture.md): Separate portable compilation, host execution, and recovery responsibilities. - [Resource and provider authoring](https://rivet.chrisboulton.com/contributing/resource-authoring.md): Registered definitions, typed assets, relationship hooks, and host lifecycle contracts. - [Subprocess plugins](https://rivet.chrisboulton.com/contributing/plugins.md): Install and author resource, service and package provider, function, and shared action plugins. - [Testing and local docs](https://rivet.chrisboulton.com/contributing/testing.md): Validate the Rust implementation and preview the Fern site without publishing.