---
name: tentaflake
description: Install, configure, review, and operate tentaflake, the NixOS flake template for isolated Hermes and ZeroClaw agents. Use when a task mentions tentaflake, its security profiles, LLM broker, research relay, disposable worker, workspace quota, the tentaflake CLI, or a NixOS host built from the template.
metadata:
  homepage: https://tentaflake.dev
  documentation: https://docs.tentaflake.dev/llms.txt
---

# tentaflake

tentaflake is a generic, MIT-licensed NixOS flake template for running isolated
AI agent controllers (Hermes and ZeroClaw) on one machine you manage. It is
pre-1.0: options, defaults, and workflows change between releases. Read the
current documentation instead of relying on what you remember.

## Read the documentation first

- Index of every page: <https://docs.tentaflake.dev/llms.txt>
- One page as Markdown: replace the trailing slash of a page URL with `.md`,
  for example <https://docs.tentaflake.dev/getting-started/quickstart.md>
- Everything in one file: <https://docs.tentaflake.dev/llms-full.txt>

Each synchronized page starts with a `Source:` line naming the upstream file
and commit. Quote the page you used, and say so when the documentation does not
cover a question.

## Where to look

| Task | Page |
| --- | --- |
| Install a dedicated host from the ISO | `getting-started/install.md` |
| First secure deployment on an installed host | `getting-started/quickstart.md` |
| Declare agents or onboard stopped additions on an installed host | `configuration/agents.md` |
| Common builder, adapter contracts and runtime support | `configuration/agent-adapters.md` |
| Model access without handing over provider keys | `configuration/brokered-egress.md` |
| Web research and VPN readiness | `configuration/research.md` |
| Tool execution behind approval | `configuration/disposable-worker.md` |
| Workspace and optional private-state limits and migration | `configuration/workspace-quota.md` |
| Encrypted credentials | `configuration/secrets.md` |
| CLI, status, health, and doctor | `operations/cli-shell.md` |
| Private operator connectivity and SSH policy | `operations/tailscale.md` |
| Troubleshooting and recovery | `operations/recovery.md` |
| Profiles and migration from `dev` | `security/profiles.md` |
| Assets, adversaries, non-goals | `security/threat-model.md` |

All paths are relative to <https://docs.tentaflake.dev/>.

`mkAgent` selects registered adapters; the Hermes and ZeroClaw legacy builders remain compatible. OpenClaw is a stopped refusal scaffold without an OCI runtime or accepted model, Research, and worker integration. Broker SSE for Chat Completions and Responses requires per-agent `llm.streaming.enable` and remains disabled by default. Bounded transport tests do not prove vendor runtime acceptance.

Generic digest-pinned OCI definitions reuse the same containment and require `balanced`. They remain stopped pending capability admission; generic model and Research hooks are not accepted. Native tools execute inside the capsule, not automatically through the worker. `tentaflake runtimes --json` lists preset declarations and evidence levels, not live readiness. Installed-host `agent template` and `agent validate|plan|import` prepare non-secret stopped additions; import does not git-add, rebuild, activate, or start services. Consult the onboarding guide before any explicit host update.

Optional private-state quotas match the adapter's exact state source and ownership and use a separate fixed-size Btrfs image. Existing state needs explicit offline migration and quota-aware backup/restore. The worker queue uses durable claims and aggregate request ceilings; interrupted jobs retire without automatic replay, and backup rollback still needs operator review. Read the quota and disposable-worker guides before changing either policy.

Read the Research guide before selecting or draining an Internet exit. The
optional `services.secureResearch.vpnObserver` is disabled by default; readiness
requires fresh trusted observations and controller leases. Keep evidence,
leases and markers root-protected and unwritable by agents; VPN credentials stay
on the host.
Management membership is not exit readiness. Follow the operator drain procedure
while keeping the old exit and firewall protected; option checks and upstream
fixtures do not establish Tentaflake real-tunnel integration or operator acceptance.

## Rules that hold in every task

1. **Building is not activating.** Evaluate and build without activation, show
   the result, and stop. `nixos-rebuild switch`, writing an installer image to
   a disk, and partitioning are operator decisions; never run them without an
   explicit instruction for that exact host or device.
2. **Stay on the `balanced` profile.** Do not switch to `dev` to make an
   evaluation pass. `dev` is a compatibility path and not a security boundary
   for untrusted, continuously running agents. `strict` fails evaluation by
   design until a separate-kernel boundary exists.
3. **No secrets in Nix expressions, JSON, Git, the Nix store, or chat.**
   Provider credentials stay in runtime-only host files and are loaded only
   into the LLM broker; the agent receives a virtual key.
4. **Do not add direct access under `balanced`.** `envFile`, `agenixFile`,
   `hostPort`, `servePort`, host networking, and literal secrets are rejected
   at evaluation. Treat the rejection as the answer, not as an obstacle.
5. **Keep an agent stopped until its policy is complete.** `autoStart = true`
   under `balanced` requires an enabled LLM broker, disposable worker,
   fixed-size workspace quota, and research relay for that exact container
   name. Without a broker declaration the capsule stays at `network=none`.
6. **Web access goes only through `secure-research-tool`.** Do not enable the
   legacy fetch broker next to a research relay, a second web transport, or
   provider-hosted web tools. Retrieved content stays untrusted.
7. **Report evidence, not hope.** A successful build proves the candidate
   closure, not the live host. Missing runtime facts are unknown, never safe.
8. **Keep the template generic.** Real hostnames, hardware configuration,
   credentials, and deployment-specific agents belong in a fork.
9. **Verify execution routing.** Declaring a disposable worker does not prove
   that every native tool uses its queue. Actual vendor startup, MCP discovery
   and worker routing need evidence from the exact pinned image.
10. **Keep management operator-owned.** `tentaflake.management` declares private
    connectivity and SSH policy; Tailscale is the only reviewed backend.
    `tentaflake.tailscale.enable` aliases `management.enable`. Balanced requires
    read-only configured capabilities and still forbids public OpenSSH.
    Version-2 manifests describe configuration; legacy or missing management
    records stay unknown. Enrollment, operator access and effective remote
    grants need separate evidence. Management does not select the Research exit.

## Verify on an activated host

```text
tentaflake status
tentaflake health
tentaflake doctor --security
tentaflake doctor --security --json
```

`health` and `doctor` exit non-zero for failed units, unknown agent states, or
root-disk usage of at least 90%. Stopped agents are valid. Add `--hide` before sharing
a report so host and agent names are redacted.

## When this skill and the documentation disagree

The documentation at its pinned source revision wins. This skill is a map; the
pages are the reference.
