{"_id":"@antongolub/artel","_rev":"7-b7669e2f42fced17fe69ccb5968eaf7b","name":"@antongolub/artel","dist-tags":{"latest":"0.4.0"},"versions":{"0.0.1":{"name":"@antongolub/artel","version":"0.0.1","keywords":["multi-agent","orchestration","agentic","research","claude","codex","copilot","cli","event-sourcing","uuid-v7"],"author":{"name":"Anton Golub","email":"antongolub@antongolub.com"},"license":"MIT","_id":"@antongolub/artel@0.0.1","maintainers":[{"name":"antongolub","email":"golub.anton@gmail.com"}],"homepage":"https://github.com/antongolub/artel#readme","bugs":{"url":"https://github.com/antongolub/artel/issues"},"bin":{"artel":"engine/cli/artel.mjs"},"dist":{"shasum":"5deb43dff7a92b89aab232739cb58459e65b8134","tarball":"https://registry.npmjs.org/@antongolub/artel/-/artel-0.0.1.tgz","fileCount":43,"integrity":"sha512-MDroAzSmAwtTZv6j/GxDS+T6AnAywGMCLueQH1iNxKvSBKN1lHjQnZXq216nIvX0CYhV5fayAwb8dGaGZO8qfQ==","signatures":[{"sig":"MEUCIQCRC2bNqyqeI0JuQBh13Fg2yfKA1XVO65TLNChmJn8lhgIgakOJihci3op8Wfv362HtLEMjWYzASMpa3KntvmK1HT8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146920},"type":"module","engines":{"node":">=20"},"gitHead":"3380fecfe8683b7b0bc45195fa3dc19744de33b4","scripts":{"test":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm test && npm run typecheck"},"_npmUser":{"name":"antongolub","email":"golub.anton@gmail.com"},"repository":{"url":"git+https://github.com/antongolub/artel.git","type":"git"},"_npmVersion":"11.12.1","description":"Multi-agent orchestration research — coordination layer for CLI agents.","directories":{},"_nodeVersion":"24.13.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/artel_0.0.1_1777818698908_0.3098196741627679","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@antongolub/artel","version":"0.0.2","keywords":["multi-agent","orchestration","agentic","research","claude","codex","copilot","cli","event-sourcing","uuid-v7"],"author":{"name":"Anton Golub","email":"antongolub@antongolub.com"},"license":"MIT","_id":"@antongolub/artel@0.0.2","maintainers":[{"name":"antongolub","email":"golub.anton@gmail.com"}],"homepage":"https://github.com/antongolub/artel#readme","bugs":{"url":"https://github.com/antongolub/artel/issues"},"bin":{"artel":"engine/cli/artel.mjs"},"dist":{"shasum":"ee767444b5766fb706a2cb7849f10f85b60ef527","tarball":"https://registry.npmjs.org/@antongolub/artel/-/artel-0.0.2.tgz","fileCount":43,"integrity":"sha512-5B5lF+87hbRQbb1rtte2WRVyj/VVvXeajKHTuGCUxVydibbAkPfjFCQVQieJgiJLpSF/uIkmJMAc2WX9H3UV9w==","signatures":[{"sig":"MEQCIEvDCqCKN02c40O/3hE4HumCDHTQWfAqKl1MyNGeuOMJAiB+hsSSxsrgu0NchDER/46EEY79zm5rTtYXMzjTXsNo0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":149187},"type":"module","engines":{"node":">=20"},"gitHead":"df0b0876601565b02094d4fbc383bb34a02962b0","scripts":{"test":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm test && npm run typecheck"},"_npmUser":{"name":"antongolub","email":"golub.anton@gmail.com"},"repository":{"url":"git+https://github.com/antongolub/artel.git","type":"git"},"_npmVersion":"11.12.1","description":"Multi-agent orchestration research — coordination layer for CLI agents.","directories":{},"_nodeVersion":"24.13.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/artel_0.0.2_1777823748965_0.8797379799896197","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@antongolub/artel","version":"0.0.3","keywords":["multi-agent","orchestration","agentic","research","claude","codex","copilot","cli","event-sourcing","uuid-v7"],"author":{"name":"Anton Golub","email":"antongolub@antongolub.com"},"license":"MIT","_id":"@antongolub/artel@0.0.3","maintainers":[{"name":"antongolub","email":"golub.anton@gmail.com"}],"homepage":"https://github.com/antongolub/artel#readme","bugs":{"url":"https://github.com/antongolub/artel/issues"},"bin":{"artel":"engine/cli/artel.mjs"},"dist":{"shasum":"287581b8b9b401c1cd9a1002063f394916743fe9","tarball":"https://registry.npmjs.org/@antongolub/artel/-/artel-0.0.3.tgz","fileCount":43,"integrity":"sha512-sqLSkXPx7X+/j1Y8wHNcAFOl39cYf9TBYeKd8MKxy8Y9DtEdaVCkCO1yILNudRau1E3o7UjSDvv2zyt3pYwpbw==","signatures":[{"sig":"MEYCIQC+QvaS9du9vXVoZD+faLJxsCIXvWgEK6eI1rEu5MpgDgIhAMT4pD2e7D+0fQ8H9n27jd1fmtLdkahi/Nw1+eqT/s+8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@antongolub%2fartel@0.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":153189},"type":"module","engines":{"node":">=20"},"gitHead":"6423d79ce4cb7a3ee13996f77f6f4bccffbe7b29","scripts":{"test":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm test && npm run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fb598e62-d77a-4267-8882-37b846eed105"}},"repository":{"url":"git+https://github.com/antongolub/artel.git","type":"git"},"_npmVersion":"11.11.0","description":"Multi-agent orchestration research — coordination layer for CLI agents.","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/artel_0.0.3_1777830082375_0.06195162791390474","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@antongolub/artel","version":"0.1.0","keywords":["multi-agent","orchestration","agentic","research","claude","codex","copilot","cli","event-sourcing","uuid-v7"],"author":{"name":"Anton Golub","email":"antongolub@antongolub.com"},"license":"MIT","_id":"@antongolub/artel@0.1.0","maintainers":[{"name":"antongolub","email":"golub.anton@gmail.com"}],"homepage":"https://github.com/antongolub/artel#readme","bugs":{"url":"https://github.com/antongolub/artel/issues"},"bin":{"artel":"engine/cli/artel.mjs"},"dist":{"shasum":"6dbbbcaa51630d7575af41ea4106c17aa38b96a2","tarball":"https://registry.npmjs.org/@antongolub/artel/-/artel-0.1.0.tgz","fileCount":44,"integrity":"sha512-VRKkL+zWEbWqTOkFXqpV2JkcDdbEn6A2vKSzgNd4uTJiW/ubOhxwD8PY/xuC1APgmEgUbddLfADsBNf3oGdZtQ==","signatures":[{"sig":"MEUCIFDryCxpmhK1eOMJlziOV1szz4l+mIcP9tL3CYiDElr4AiEAojy1hoMGVbVyV5Jo8MKsKkxuRHZaj5qPU9Y2hActnLU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@antongolub%2fartel@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":161216},"type":"module","engines":{"node":">=20"},"gitHead":"9bed01cada6977fdde971f49727bd735f3147ba4","scripts":{"test":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm test && npm run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fb598e62-d77a-4267-8882-37b846eed105"}},"repository":{"url":"git+https://github.com/antongolub/artel.git","type":"git"},"_npmVersion":"11.11.0","description":"Multi-agent orchestration research — coordination layer for CLI agents.","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/artel_0.1.0_1777831925178_0.9878205294870197","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@antongolub/artel","version":"0.2.0","keywords":["multi-agent","orchestration","agentic","research","claude","codex","copilot","cli","event-sourcing","uuid-v7"],"author":{"name":"Anton Golub","email":"antongolub@antongolub.com"},"license":"MIT","_id":"@antongolub/artel@0.2.0","maintainers":[{"name":"antongolub","email":"golub.anton@gmail.com"}],"homepage":"https://github.com/antongolub/artel#readme","bugs":{"url":"https://github.com/antongolub/artel/issues"},"bin":{"artel":"engine/cli/artel.mjs"},"dist":{"shasum":"64e1654230454ce12a1c71159763c7f1f6c5aa21","tarball":"https://registry.npmjs.org/@antongolub/artel/-/artel-0.2.0.tgz","fileCount":45,"integrity":"sha512-zBJ4k6b8CAs7frrS5hJlJ1drr1kKa8J3SAvHL4s6wyqAfhn0TsLIbxziqvkoLh44o+t7+ZGj4bBESCVfkBU51w==","signatures":[{"sig":"MEUCIAxryM3bXQ+mV7h+IJuZNXnj5mBghDjOH/A/KETWxdnYAiEAoNH6kUm1ODS8H22SaCl5RWvGnEZYi0rwqutkjYX1Ssk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@antongolub%2fartel@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":165276},"type":"module","engines":{"node":">=20"},"gitHead":"84434fc22bd2e49b6ab0e337aca7122566a2c316","scripts":{"test":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm test && npm run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fb598e62-d77a-4267-8882-37b846eed105"}},"repository":{"url":"git+https://github.com/antongolub/artel.git","type":"git"},"_npmVersion":"11.11.0","description":"Multi-agent orchestration research — coordination layer for CLI agents.","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/artel_0.2.0_1777836944930_0.9393835123143977","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@antongolub/artel","version":"0.3.0","keywords":["multi-agent","orchestration","agentic","research","claude","codex","copilot","cli","event-sourcing","uuid-v7"],"author":{"name":"Anton Golub","email":"antongolub@antongolub.com"},"license":"MIT","_id":"@antongolub/artel@0.3.0","maintainers":[{"name":"antongolub","email":"golub.anton@gmail.com"}],"homepage":"https://github.com/antongolub/artel#readme","bugs":{"url":"https://github.com/antongolub/artel/issues"},"bin":{"artel":"engine/cli/artel.mjs"},"dist":{"shasum":"2f634a81e00c02613526a9e3fffc4cf57c02504b","tarball":"https://registry.npmjs.org/@antongolub/artel/-/artel-0.3.0.tgz","fileCount":49,"integrity":"sha512-Zy5p2MLIWg4NYFz7wCQaEq596wm8p1D4ZVQy1Fi/OaYd9+Ah3JPLpSm49gogSe0aQIFeJKbhiR3s0A9GU0ORIw==","signatures":[{"sig":"MEQCIBLz+g1JZlTQLQevMMiyYHU523jvj11/3FtptTCNXg3wAiBrbhJKeAc9lQlRbKTxjwQRIcUCk7Plnh6pdgRWW3UdIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@antongolub%2fartel@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":196249},"type":"module","engines":{"node":">=20"},"gitHead":"42af57ee29064e57f097bd5f089ee83bc1e034cb","scripts":{"test":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm test && npm run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fb598e62-d77a-4267-8882-37b846eed105"}},"repository":{"url":"git+https://github.com/antongolub/artel.git","type":"git"},"_npmVersion":"11.11.0","description":"Multi-agent orchestration research — coordination layer for CLI agents.","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/artel_0.3.0_1777908291670_0.4287147591627245","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@antongolub/artel","version":"0.4.0","description":"Multi-agent orchestration research — coordination layer for CLI agents.","license":"MIT","author":{"name":"Anton Golub","email":"antongolub@antongolub.com"},"homepage":"https://github.com/antongolub/artel#readme","bugs":{"url":"https://github.com/antongolub/artel/issues"},"repository":{"type":"git","url":"git+https://github.com/antongolub/artel.git"},"keywords":["multi-agent","orchestration","agentic","research","claude","codex","copilot","cli","event-sourcing","uuid-v7"],"type":"module","bin":{"artel":"engine/cli/artel.mjs"},"engines":{"node":">=20"},"publishConfig":{"access":"public"},"scripts":{"test":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit","prepublishOnly":"npm test && npm run typecheck"},"devDependencies":{"@types/node":"^22.0.0","typescript":"^5.6.0","vitest":"^2.1.9"},"gitHead":"6e42363cd61972288663e02a218c2a12432bf122","_id":"@antongolub/artel@0.4.0","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-oscBosPnyhZURpYA6zTijoxrVk1aAW+N8lBPiiH8anAmxXU+ERZ9mdbCx9DIOznONtPsmyHNqgL1pOmfaIsTHQ==","shasum":"0e3229dd74609e438f44201bb617a8428e6f581d","tarball":"https://registry.npmjs.org/@antongolub/artel/-/artel-0.4.0.tgz","fileCount":66,"unpackedSize":407740,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@antongolub%2fartel@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIC41A2LMbsKzug442Y80N63KQg4T+ejhicaDUJCC99xiAiEAtv8KReu7Dg/ujyMojHuIvx4U/BmpSCAoFEJIX/AuxDk="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fb598e62-d77a-4267-8882-37b846eed105"}},"directories":{},"maintainers":[{"name":"antongolub","email":"golub.anton@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/artel_0.4.0_1778580363722_0.6983920849957952"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-03T14:31:38.782Z","modified":"2026-05-12T10:06:04.242Z","0.0.1":"2026-05-03T14:31:39.051Z","0.0.2":"2026-05-03T15:55:49.113Z","0.0.3":"2026-05-03T17:41:22.503Z","0.1.0":"2026-05-03T18:12:05.323Z","0.2.0":"2026-05-03T19:35:45.128Z","0.3.0":"2026-05-04T15:24:51.821Z","0.4.0":"2026-05-12T10:06:03.899Z"},"bugs":{"url":"https://github.com/antongolub/artel/issues"},"author":{"name":"Anton Golub","email":"antongolub@antongolub.com"},"license":"MIT","homepage":"https://github.com/antongolub/artel#readme","keywords":["multi-agent","orchestration","agentic","research","claude","codex","copilot","cli","event-sourcing","uuid-v7"],"repository":{"type":"git","url":"git+https://github.com/antongolub/artel.git"},"description":"Multi-agent orchestration research — coordination layer for CLI agents.","maintainers":[{"name":"antongolub","email":"golub.anton@gmail.com"}],"readme":"# artel\n\n> Multi-agent orchestration research. A thin coordination layer for\n> CLI-based agents. Exploratory; not for production.\n\n## The question\n\nCan multi-agent coordination be built from mostly Unix-like primitives\n— processes, files, append-only logs — and still get good ergonomics,\nlow latency, and a programming model that maps cleanly onto how\nengineers already work with code?\n\nConcretely: every action is a real OS process. Every state change is\none append to a file. Every history is replayable from a git log.\nEvery agent is a CLI tool, regardless of language or vendor. Every\ncluster is federation-ready by default.\n\nartel is the experiment that probes that question.\n\n## What this is NOT\n\n- **Workflow automation platform** (like [n8n](https://n8n.io)).\n  Visual node editors, service integrations, browser UIs, persistent\n  servers — different category. artel has none of those.\n- **In-process agent framework** (LangGraph, CrewAI, AutoGen). Single\n  runtime, in-memory actors — different design point. artel runs\n  each dispatch as a separate OS process and coordinates through\n  files and events.\n- **Production tooling.** Schema and APIs change. Federation +\n  repository abstraction reserved in schema, not implemented.\n\n## Design principles\n\n- **Minimalism.** No framework, no DSL, no server, no build step.\n- **Speed.** File appends are fast. Time-prefixed UUID v7 events sort\n  without an index. Dispatch latency ≈ agent CLI startup.\n- **Audit-friendly.** Every action is an event in `events.jsonl`.\n  Git replays the full history.\n- **Polyglot.** Any CLI is a candidate driver. Three ship in-tree\n  (claude / codex / copilot); a new driver is ~50 lines.\n\n## Architecture (sketch)\n\nTwo layers — a **shared platform** (this repo) and a **per-project\nruntime** under `.artel/` (gitignored where it holds runtime state).\n\n- `agents/<role>.md` — markdown role definitions. Frontmatter declares\n  engine, model, sandbox, tool surface, dispatch policy, identity,\n  required credentials. Body is the system prompt.\n- `skills/<name>.md` — composable tool-surface fragments. Roles declare\n  abstract `skills:`; projects override stack-specific patterns\n  (`npm` → `bun`) without touching role files.\n- `engine/` — dispatcher CLI. Reads a role, spawns the matching driver\n  CLI as an OS subprocess, watchdogs the timeout, captures every\n  boundary as a structured event. Drivers ship in-tree (claude / codex\n  / copilot); custom drivers drop into `.artel/drivers/<name>.mjs`.\n- `.artel/` — per-project runtime: `events.jsonl` (append-only event\n  stream), per-task artefacts under `.dispatches/`, cluster identity,\n  optional skill / driver overlays, optional truststore for agent git\n  identities and credentials.\n\nFull architecture in [`DESIGN.md`](./DESIGN.md). Status per phase in\n[`PLAN.md`](./PLAN.md). Schema migration notes in\n[`MIGRATION.md`](./MIGRATION.md) (handoff-only, regenerated per\nupgrade cycle).\n\n## CLI\n\n```\nartel <init | probe | run | spawn | status | logs | events | replay | trust | queue | pipeline | sweep | checkpoint>\n```\n\n| command | what it does |\n|---|---|\n| `init` | bootstrap `.artel/cluster.json` for a project |\n| `probe` | engine readiness — binary on PATH, version, auth state, optional live roundtrip |\n| `run` | dispatch a role one-shot (low-level) |\n| `spawn` | dispatch with task sidecar + branch + timeout |\n| `status` | cluster snapshot or live dashboard (FEED · RUNNING · RECENT · ACTIVITY · QUEUE · TOKENS) |\n| `logs <task>` | drill into a single dispatch (meta + events + prompt + out) |\n| `events` | tail / filter the event stream — `--task` `--trace` `--kind` `--type` `--since` `-f` |\n| `replay <task | dispatch-id>` | re-run a past dispatch on the same or a different engine |\n| `trust` | inspect / manage agent identities, credentials, SSH keys, encryption |\n| `queue` | inspect / mutate `.artel/QUEUE.md` + edges — `list / add / move / done / rm / link / unlink / ready / graph` |\n| `pipeline` | declarative multi-step flows — `register / list / show / run / runs / status / cancel` |\n| `sweep` | prune old `.dispatches/` artefacts (keeps active + newest `--keep`) |\n| `checkpoint` | sub-role self-report between phases |\n\nRun `artel <cmd> --help` for command-specific options.\n\n## Try it\n\n```bash\nnpm install -g @antongolub/artel\n\n# 1. Bootstrap the project's runtime\nartel init --name my-cluster\n\n# 2. Verify engines are reachable + authed\nartel probe\n\n# 3. Dispatch\nartel spawn implementer my-task --engine codex --effort high -p \"ship the fixture\"\n\n# 4. Watch live\nartel status --watch\nartel events -f --task my-task\n\n# 5. Drill in when something fails\nartel logs my-task\n\n# 6. Re-run on a different engine\nartel replay my-task --engine claude\n```\n\nOr clone the repo to read / hack the platform itself:\n\n```bash\ngit clone https://github.com/antongolub/artel.git\nARTEL_HOME=$PWD/artel\nnode $ARTEL_HOME/engine/cli/artel.mjs init --name my-cluster\n```\n\nA copy-and-go template lives in [`examples/quickstart/`](./examples/quickstart/)\n— minimal `package.json`, `.gitignore`, `.artel/QUEUE.md` skeleton,\nplus a walkthrough of init → probe → spawn → status → logs → replay.\n\n### Optional: pipelines for multi-step flows\n\nChain dispatches into declarative flows. 6 node types\n(`dispatch` / `parallel` / `condition` / `handler` /\n`subpipeline` / `terminal`); routing by disposition through\n`on_disposition` edges; `{{ template }}` substitution against\nrun attrs; full lifecycle observable in `events.jsonl`.\n\n```yaml\n# .artel/pipelines/review.json — register, run, observe\nreview:\n  type: parallel              # fan-out, first success wins\n  branches: [code, security, docs]\n  join: any-complete\n\napprove:\n  type: handler               # inline guard, no LLM\n  handler: builtin.assert\n  if: { attr: env, equals: prod }\n  message: \"deploy of {{ env }} requires env=prod\"\n\ndeploy:\n  type: dispatch              # the LLM-driven step\n  role: implementer\n  prompt: \"deploy {{ feature }}\"\n  timeout_ms: '5m'            # suffix syntax: ms / s / m / h / d\n```\n\n```bash\nartel pipeline register pipelines/release.json\nartel pipeline run release --attrs '{\"feature\":\"auth\",\"env\":\"prod\"}'\nartel pipeline runs                        # newest-first list\nartel pipeline status <run-id-fragment>    # per-step timeline\nartel pipeline cancel <run-id-fragment>    # abort in-flight\n```\n\nHandler builtins: `builtin.exec` (bash), `builtin.assert`\n(predicate guard), `builtin.set_attr` (mutate run attrs),\n`builtin.git_tag`. Subpipelines compose flows with cycle\ndetection + parent-cancel cascade.\n\n### Optional: truststore for agent identity + secrets\n\nSeparate agent-made commits from your operator identity. Inject API\ntokens into the dispatch env without exposing them in the repo or\nshell history.\n\n```bash\nartel trust set-identity bot --author \"artel-bot <bot@cluster.local>\"\nartel trust gen-ssh bot | gh repo deploy-key add - --title \"artel-bot\"\nop read 'op://Personal/GitHub/token' | artel trust set-credential GITHUB_TOKEN\n\n# Roles declare what they want via frontmatter:\n#   identity: bot\n#   requires: GITHUB_TOKEN\n\n# Optional encryption at rest (AES-256-GCM, master key outside the repo):\nartel trust gen-key\nartel trust encrypt\n```\n\n## Status\n\nMVP. Single-cluster, single-host. Expect breakage, expect schema\nevolution.\n\n## License\n\n[MIT](./LICENSE)\n","readmeFilename":"README.md"}