# Dev Environment — building stacks day to day Build operation stacks with [Thanks, Computer](https://www.thanks.computer) by organizing a directory of files. ## The op stack layout An [op stack](../resonators.md) can be created locally as a directory tree of plain files: ```yaml my-workspace/ OPS/ # convention - OPS live here support/ # one directory per stack 0100_TRIAGE/ # a scope: integer + optional _LABEL classify.txcl # a rule (several .txcl at one scope step run in parallel) classify.js # optional colocated nano-op for op://classify mock-request.json # optional fixtures mock-response.json FILES/ # optional static assets (txco://static) 0100_OKRS/ # multiple-directories possible at the same step okrs.txcl # a rule (several .txcl at one scope step run in parallel) 0200_NOTIFY/ notify.txcl schema.json # optional — json schema description of the stack others can use APPS/ # optional — local services txco dev boots api/server.js # these do not get deployed in a remote txco chassis txco.yaml # optional — targets, apps, op:// URLs ``` Scope directories sort the flow (`0100` before `0200`; leading zeros are cosmetic) — a *scope* is simply a step's address on disk. Step numbers can be sparse and start at 0, flowing to the next largest step. Folders nested *below* a scope are for organization; the nearest numbered folder sets the step (`0100_TRIAGE/llm/classify.txcl` runs at scope 100). Stacks whose names start with `_` are system/local (`_cron`, `_sys/…`) — loaded by the chassis, not pushed by apply. That tree *is* the flow. The chassis sees this as: ```stack support 0100 classify okrs 0200 notify ``` ## The authoring loop ```sh txco init support # scaffold a stack alternative, pull from a registry txco dev # boot apps + a dev chassis, watch, re-apply on save # …edit, save, curl, read the trace… txco apply # deploy to a cloud chassis (draft + activate per stack) ``` Beyond `apply`: `push`/`pull` for one stack, `draft`/`activate` to stage and flip deliberately, `versions` + `diff` + `status` for drift and history, `activate` an older version to roll back — the full verb table is in the [CLI reference](../advanced/cli.md). ## Develop stacks on the web You can do many of the things you do via the CLI in the admin interface. ```sh txco auth login # opens the admin UI, authenticated ``` image ## Sync developer changes If you're familiar with `git` commands, we borrow much of the same capabilities. Stacks change through versioned drafts. Once live they are immutable and a new draft is created for changes. ```sh # see if your local state diverged with the chassis txco diff ``` ```sh # pull in changes txco pull ``` ```sh # push your changes txco push ``` ```sh # activate the current txco activate ``` ```sh # see the current state txco status ``` ## Packages To make it easy to share a stack, Thanks Computer uses the standard OCI package format that you may be familiar with if you use `Docker`. We support any package registry such as (GHCR, Docker Hub, ECR, Harbor, self-hosted), and you can use standard tools like `oras` to inspect the data. ```sh txco install --as ``` For more package commands, see [oci packages](../advanced/txco-oci-packages.md).