Build your own · open source, in the open

Safe agentic actions for your own practice.

Three lists, nothing blended: what you can use today, what is tested but not public yet, and what is not built. Every claim below was checked against the code or a live response on 2026-09-29.

license Apache-2.0 (open parts)PHI never send anyBAA none executed

Today: you can use these now

Public and working. None of it needs an account.

Run it yourself: one action behind a fail-closed gate

This is harness-gate, a small gate that sits between an AI agent and one action. It is Apache-2.0, has no dependencies, and its 57 checks pass (npm test). It is public at blainomd/harness-gate: clone it, run npm test, then pipe an action in, as below. Below is the real output of a run on 2026-09-29; each line is one action piped in, with its exit code. It is version 0.1.0 and is not on npm.

# echo '<action json>' | harness-gate decide     (exit 0 = allow, 3 = hold, 4 = deny)
{"tool":"read_file", "args":{"path":"notes.md"}}                         allow  class=read          exit 0
{"tool":"send_message", "args":{"body":"hello"}}                         hold   class=message_out   exit 3   a person sends it
{"tool":"transfer_funds", "args":{"amount":1}}                           deny   class=money         exit 4   money never moves automatically
{"tool":"mystery_tool", "args":{}}                                       hold   class=unknown       exit 3   not in the manifest
{"tool":"draft_note", "args":{"text":"Patient DOB 03/15/1985 ..."}}      hold   class=draft         exit 3   possible patient identifiers: dob

# harness-gate verify   (the local receipt ledger is hash-chained)
{"ok":true,"entries":5}                                                  exit 0
# delete one line from the ledger file, verify again
{"ok":false,"brokenAt":2,"entries":2}                                    exit 1
What this is, exactly.

Rules, not a model. It classifies a call by name, holds a message out, a clinical step or a regulated filing for a person, denies money, and holds anything it does not recognise. It scans arguments only to make a verdict stricter (instruction-like text aimed at the agent, credentials, patient-identifier patterns, destructive shell patterns), and any error is a hold. Its receipts are a local hash-chained file that stores hashes, never the arguments. It does not judge clinical content, it does not replace a physician's signature, its patient-identifier patterns are a tripwire and not de-identification, and its receipts are not yet written to any public ledger.

Grow a flower: make your site a stop in the network

Added 2026-09-30. The network is a garden. Each site is a flower that a person, or an agent acting for one (the bee), can walk into, get one real thing done on the device, and leave carrying a small result to the next flower. Any site can be one, on any stack. Nothing here is bought, licensed or approved by us: the standard is public, the check runs on your machine, and the registry is rebuilt from what your site actually serves. Which flower a person is sent to first is decided by rules on /doors, not by who asked.

The Flower Standard, v1

Four steps

Pollen contract v1

The only result kinds a manifest may declare, with who sends and who receives each. A machine copy is at /schemas/pollen-kinds-v1.json; the live registry shows this contract beside what each site actually declares. To add a kind, propose it with the form above before using it. Transport: estate-pollen/1, a flat object of numbers and short labels (at most 24 keys, 200 characters each) in the URL fragment or a downloaded file, carried by the person's click only; the receiver validates it and renders it with textContent.

kindsent byreceived byfields (* required)
fall_screenerfallrisks.comhealthgait.com, comfortcard.org, co-op.carescore*, max*, band* lower | moderate | higher
gait_checkhealthgait.comfallrisks.com, comfortcard.orgspeed_ms* (1 dp), gait_age, band*
joint_riskarthritisrisk.comjointclass.com, surgeryprocess.com, comfortcard.orgjoint* knee | hip | shoulder | hand | spine | other, pattern* mechanical | inflammatory | unclear, score
back_assessmentdoesyourbackhurt.comcomfortcard.org, surgeryprocess.comband* self_care | see_clinician, weeks. Never sent when urgent.
caregiver_situationfamilycaregive.comco-op.care, comfortcard.org, caregoals.comstage* worried | starting | in_it, needs[] (up to 5), hours_week
frailty_recordmedfrail.comcomfortcard.orgdate*, items_met*, items*, band
record_fingerprintcomfortcard.org, chanio.comhashcare.comfp* (64 lowercase hex: the SHA-256 of a whole file or of a root the sender publishes, never a hash of short personal text), label (up to 60), kept (a date). The person still presses Check or Anchor.
What a flower gets, and what it does not.

A listed flower is one the rules on /doors and the registry can send a person or an agent to, and one that siblings can hand pollen to. It does not get a payment, a license, a share, a badge, or any claim about being reviewed by us. The open code you can build with is the list under Today. Anything a flower says about physicians, coverage or money has to be true on its own page, by the same standard as the rest of the network.

Not built

Before you build on anything here.

Do not send patient information to any endpoint on this site. No business associate agreement is executed, no production case has been reviewed, and every physician-review case so far runs on synthetic data. Nothing here is medical, coding, billing or legal advice.