carinya
digital
Agent framework

agents that run themselves

waratah is a portable agent definition, built to any provider. Define identity, instructions, connectors, and schedules once — deploy the same agent to Claude and beyond.

waratah buildDry-run

agent/

  • instructions.md
  • connectors/
  • schedules/
  • skills/
  • subagents/

claude

agent.json, skills, one deploy per schedule

cursor

agent.json rendered — deploy waits

Directory is source of truth · artifacts are diffs

1
directory defines the whole agent
2
providers rendered today — Claude, Cursor
0
credentials committed to dist/
agent directoryAuthoritative
  • agent/
  • instructions.md
  • connectors/
  • schedules/
  • skills/
  • escalate.md
  • subagents/
  • systems-analyst/

The model

an agent is a directory

The agent directory is authoritative. Conventional subdirectories — connectors/, schedules/, skills/, subagents/ — are discovered automatically. Render it into provider-specific artifacts you can review before they ship.

roster.ymlChecked

Coordinator

daily-changes

v1.4.0

subagents/

Matched

systems-analyst

v1.4.0

Declared on the roster and present on disk. An orphan or an undeclared directory fails the build.

designed for coordinated agents

A coordinator names a version-pinned roster; every entry needs a matching directory under subagents/ — checked in both directions.

Version-pinned rosters — a coordinator declares exactly which subagents, at which version, ship with it.

Checked both directions — an undeclared subagent and an orphaned directory both fail the build.

One level of delegation — a subagent has no clock of its own and declares no subagents of its own.

provider neutral, fully configurable

model is a tier, not a vendor id. Each provider resolves it and records what shipped — a provider that can’t support what an agent needs fails the build loudly, never with a silent, degraded artifact.

claude

Deploy target

Emits agent.json plus skills and multiagent where declared, and one deployment per schedule.

cursor

Rendered

Emits agent.json. No publisher yet — deploy refuses it rather than shipping partial support.

Authoring

configure with markdown

Identity and behaviour are plain markdown, not a DSL. A skills/ file is a playbook the agent reads when it’s relevant. Everything else is typed YAML.

instructions.md

# Identity
You are the file-aging watcher.
Flag files past the review threshold
and draft a reminder — never send it.
          

skills/escalate.md

---
description: When a file is overdue
---
Draft the reminder, tag the reviewer,
and stop. Do not send without a human.
          

deploy your first agent today

Clone the repo, define your agent, and dry-run the deploy — no credentials required to see what would happen.

Get started on GitHub

FAQs

What is waratah, exactly?
A portable way to define an agent once — identity, instructions, connectors, schedules — and render it into provider-specific artifacts, instead of hand-writing each provider's config format.
Do I need to know every provider’s API?
No. You write the directory once; each provider's renderer knows how to turn it into that provider's request shape.
What happens if a provider can’t support something my agent needs?
The build fails loudly at that combination — never a silent, degraded artifact you discover in production.
Is dist/ safe to trust?
Yes — it's committed output, and deploy refuses to ship a stale dist/, so what ships is always what was reviewed.