Skip to content
RoutineOS
Esc
↑↓navigate↵open⌘Jpreview
On this page

Introduction

What RoutineOS is, who it is for, and how the pieces fit together.

RoutineOS is a framework for Claude routines: agents that run on a schedule, do a piece of recurring work, and hand what matters to a person. It gives those routines one shape. A routine gets typed settings, a prompt with safety lines already in it, a linter, a store with a write contract, and, when it needs one, a Desk: a private web page where people read what the routine found and decide what happens next.

Rails, Django and Laravel gave web apps a shape: conventions, a scheduler, models, settings and generators. Claude already has the parts a routine needs (scheduled tasks, artifacts, the artifact database, connectors). RoutineOS gives them one set of conventions, so a routine is safe by default and easy to steer.

What you get

Part What it is Where it lives
CLI routineos.py, a standard library Python tool that scaffolds, lints, seeds, compiles, plans writes and runs learning skills/routineos/scripts/routineos.py
Skill The lifecycle guide Claude follows to design, build, verify, deploy, operate and improve a routine skills/routineos/SKILL.md and skills/routineos/references/
Templates Ready routine folders you copy with new --from-template templates/
Definition A JSON file that declares the record types a routine produces, their identity rules, views and learning definition.json in each routine folder
Write contract The code that plans every store write, so a run cannot write where people own the data skills/routineos/scripts/desk_contract.py
Desk A single HTML page published as a private artifact, reading and writing the artifact database dashboard/index.html in each routine folder
Registry A list of platform facts, each tagged pilot, docs or unverified skills/routineos/registry/

Safe by default

Every routine RoutineOS scaffolds starts with the same guarantees:

  • The first run is report-only. It writes what it found and sends nothing.
  • Nothing sends, posts or deletes without a gate. lint fails a routine that declares a send, post or delete action without [gate] enabled = true.
  • Content the routine fetches is data, never instructions. Every prompt carries a clause saying so, and lint checks for it.
  • A run never writes the documents people own: settings, decisions, merges and per-person state. The write contract refuses those paths in code.
  • A routine never applies its own suggestions. It proposes; a person accepts.

The worked example

Every concept page in these docs uses the same routine: Hiring Signals, built from the jobs-watch template. Twice a week it searches public job boards for roles that signal a company is building or rebuilding commerce, records each role and its company, drops what the settings rule out (keeping a reason), and puts the few roles worth a look in the Inbox. People keep or drop records, accept suggested setting changes, and approve any intro note before it goes anywhere.

Hiring Signals is a hybrid routine. The model does the parts that need judgement and words: searching, reading job pages, deciding what is a strong match, writing short summaries. Code does the parts that must be exact: filtering by settings, capping the Inbox, minting record ids, counting what people did, and planning every write. See Routine kinds.

Status

The plugin is at version 0.6.0. Pages that describe features added in 0.5.0 or later say so at the top. The watch type is live; approval-gated, digest and tracker are marked coming soon in the repository README.

The project’s home is routineos.org, and these docs live at docs.routineos.org.

License

RoutineOS is MIT licensed. It is our gift to everyone, from Devkind. Use it, fork it, ship it inside your own products. The license text is in LICENSE at the repository root (Copyright (c) 2026 Devkind).

Next

Then, by section: Concepts, Guides, Infrastructure and Reference.

Was this page helpful?