Use cases

Each of these starts as a script someone already has. Reminix adds who can run it, how, and a record of every run.

Runbooks your support team can run

An engineer has a script that unlocks a customer's account after too many sign-in attempts. Support needs it several times a day, and today they ask in a channel and wait.

How it's set up. Publish the script to Reminix and share it with the Support team only. They get a form; the admin key stays in Reminix.

Share a runbook with a team: the full guide

{
  "slug": "unlock-account",
  "command": "python unlock.py {email}",
  "hosts": ["api.yourapp.com"],
  "secrets": {
    "ADMIN_KEY": {
      "host": "api.yourapp.com",
      "header": "Authorization",
      "value": "Bearer {secret}"
    }
  },
  "inputSchema": {
    "type": "object",
    "required": ["email"],
    "properties": {
      "email": {
        "type": "string",
        "title": "Customer email"
      }
    }
  }
}

Reports on a schedule

On the first of every month, someone pulls last month's revenue out of Stripe into a spreadsheet for Finance. When they're away, it waits.

How it's set up. Add a schedule to the report's script: the 1st of each month at 8:00 in your timezone. Reminix records each run like any other, and the CSV the script writes comes back as a file to download.

Send a report every month: the full guide

await reminix.schedules.create("monthly-report", {
  name: "First of the month",
  cron: "0 8 1 * *",
  timezone: "Europe/London",
});
reminix.schedules.create(
    "monthly-report",
    name="First of the month",
    cron="0 8 1 * *",
    timezone="Europe/London",
)

Syncs and batch jobs that take minutes

The nightly sync copies the day's orders from the shop to the warehouse. It takes minutes, so it lives on one person's laptop, and nobody else can see whether it ran or why it failed.

How it's set up. Give the script a longer timeout. The run answers at once, shows its log and progress as it goes, and anyone allowed can cancel it.

Run a nightly sync: the full guide

for i, page in enumerate(pages, 1):
    sync_page(page)
    print(
        f"::progress {i * 100 // len(pages)} Page {i} of {len(pages)}",
        file=sys.stderr,
    )
print(json.dumps({"pages": len(pages)}))

Let AI agents act, with a person in the loop

You want an agent to take real actions, like refunding a customer who was charged twice, but not without someone checking first.

How it's set up. Every published script is a tool your agents can call over MCP, so refund-customer becomes refund_customer. Set it so agents' runs wait for an owner or admin to approve.

Let your agents run scripts, with approval: the full guide

# Claude Code: add Reminix, then sign in and choose what it may do
claude mcp add --transport http reminix \
  https://mcp.reminix.com/mcp

Follow up when something fails

When the nightly sync fails, someone should hear about it, with the error, before customers do.

How it's set up. Publish an alert-on-failure script and add a trigger to it: when the sync's run fails, run the alert with the run's id and error.

Alert when a run fails: the full guide

{
  "name": "Alert on failed sync",
  "eventType": "run.failed",
  "filter": { "script.slug": "nightly-sync" },
  "inputs": {
    "runId": "{{event.data.runId}}",
    "error": "{{event.data.error}}"
  }
}

Something else?

If you have a script for it, Reminix can probably run it. Tell us what you need, or read how scripts work.