Monterosa Labs

Monterosa CLI

mic is the command line for the Interaction Cloud. Create test content, copy events between shows and environments, back up and compare project settings, and script the clicks you do by hand in Studio. The same commands run from your terminal, from a CI job, and from Claude.

~ mic
# 1. Install mic.
$ curl -fsSL \
    https://assets.monterosa.co/cli/install.sh \
    | bash
  ✓ installed mic

# 2. Point it at your Studio instance.
$ mic auth login \
    --url https://studio.monterosa.cloud
  Saved profile "default" (…4f2a).

# 3. Run a command.
$ mic orgs list
  id       name
  org_7k2  Monterosa
Day to day

What people use it for

Six jobs that take the longest in Studio, each one a command. Every command accepts --json, so the output goes straight into a script.

01

Create test content

One command makes an event, adds one element of every type the project has enabled, publishes it and prints the consumer URL. Use it for a demo, a QA pass, or checking a new FanKit version. mic smoke clean removes what it made.

$ mic smoke run --project $PID
02

Copy an event

Clone an event and all its elements into a new one. mic elements clone-from copies a subset between two events, and clone-group copies a wrapper with its children and rewrites the link between them so the copy still works.

$ mic events clone evt_8h2 --name "Week 13"
03

Back up and compare settings

Pull a project's settings to a file on disk. settings diff shows what changed, key by key, before settings push replaces the blob. mic projects diff compares two projects and tells you which setting is behind the different behaviour.

$ mic projects settings pull $PID --out settings.json
04

Publish and schedule in bulk

Publish every unpublished element on an event, children before wrappers, with --dry-run to see the order first. mic events schedule spaces element start offsets across an event instead of setting each one by hand.

$ mic elements publish-pending --event $EID --dry-run
05

Get the URL you need

Derive the consumer, Studio, feeds and livestats URLs for a project or event, rather than assembling them from the embed settings yourself.

$ mic url consumer --project $PID --event $EID
06

Describe a project as a file

Export a live project to a YAML manifest, keep it in git, and apply it somewhere else. mic plan prints the add and update steps without touching anything. mic apply runs them. It never deletes what the manifest leaves out. This part is early.

$ mic export --project $PID --out project.yaml
Agents and CI

Run it from Claude, or run it at 08:00 with nobody watching

The CLI is the only surface. Everything else calls it, so an agent and a person get the same commands, the same auth and the same result.

  • Tools nobody hand-writes. mic describe emits metadata for every command it exposes: the name, the arguments, the flag types, and which of them are required. mic mcp runs the same binary as an MCP server and builds one tool per command from that metadata, so every command is available to an agent the moment it exists.
  • Ship once, every agent picks it up. Add a command, publish the CLI, restart the agent. There is no separate schema to update.
  • Your editor, wired on install. The installer offers to configure Claude Desktop, Claude Code, Gemini CLI and Cursor. Say no to any of them, or skip the step altogether for an unattended install.
  • In CI, use a token and a profile. mic auth login --url … --token "$MIC_TOKEN" --profile prod, then any command with --json.

There is also mic interactive, a terminal UI with an agent that calls the same commands. It runs on AWS Bedrock and needs credentials for it, so for now it is a Monterosa engineering tool rather than something you can switch on.

~ ci
# Roll last week's quiz forward, unattended.
$ mic events clone evt_8h2 \
    --name "Week 13" --json
  {"id":"evt_9k4","name":"Week 13"}

$ mic elements apply --event evt_9k4 \
    --file questions.yaml --publish

$ mic url consumer --project $PID \
    --event evt_9k4
  https://apps.monterosa.cloud/fankit/
  v25.1.0/index.html?p=$PID&e=evt_9k4#/
Safety

Lock a profile to what it is allowed to change

Your token can do anything your Studio user can do, including deleting a project. Give each profile an allow-list and the CLI checks it before it sends the request.

~ scope
# Lock this profile to one project.
$ mic auth scope add project $PID

# Or paste a Studio URL and pick the level.
$ mic auth scope add \
    "https://studio…/projects/$PID"

# See what the active profile may touch.
$ mic scope show

# Drop every restriction.
$ mic auth scope clear
  • Reads are never restricted. You can still list and inspect anything your token can see.
  • Writes outside the list fail before the request is sent. Nothing reaches the API, so there is nothing to undo.
  • An agent cannot widen its own scope. mic scope show is readable through MCP. Adding and clearing entries is not: the agent gets an error telling you to run it in your shell.
  • Deleting takes a named target and a --yes. Every command is classed by what it does: read, write or destructive. A destructive command without --yes lists what it would remove and stops there.
  • Settings pushes keep a backup. settings push writes the current remote settings to disk before it replaces them, unless you pass --no-backup.
Install

Get mic on your machine

macOS, Linux and Windows. You need Node 22 or newer, npm, and a Studio account. The installer downloads a public tarball, installs mic globally and asks you to accept the early access terms once.

~ install
# macOS.
$ curl -fsSL https://assets.monterosa.co/cli/install.sh | bash

# No prompts, for a scripted or CI install.
$ MIC_INSTALL_YES=1 MIC_ACCEPT_PREVIEW=1 curl -fsSL \
    https://assets.monterosa.co/cli/install.sh | bash

Then log in

mic auth login --url https://yourinstance.monterosa.cloud. It prompts for your bearer token.

Check it worked

mic auth whoami shows the active profile. mic orgs list is the first real call.

Find a command

mic --help, then mic events --help. Every command explains its own flags.

Stay current

mic update upgrades the CLI in place. mic update --check tells you what is available.

Questions about mic?

Tell us what you are trying to automate. We will point you at the command, or say plainly that it does not exist yet.