Skip to Content
How-to guidesCreate a deputy and a mission

Create a deputy and a mission

Hire an agent once and give it a job it can do again and again. A deputy is a standing worker with its own environment, its own memory, and its own identity on every run. A mission is a named job for that deputy: a prompt with inputs, saved and versioned. Each time a mission launches, you get a run.

Do this when you find yourself typing the same kind of task twice: triage new issues, review a pull request, update dependencies every week.

Available when your administrator enables runs and deputies.

Before you start

  • Any member can create a deputy for themselves. To create one for a team, you lead that team. To create one for the whole organization, you are an admin or owner.
  • You have a manifest the deputy will run in. If you have none, see Create a manifest.

Create the deputy

  1. In the left rail, open Deputies, then click New deputy.
  2. Enter a Name, for example “Release Warden”.
  3. Enter a Description: what this deputy is for. It is required, and it is what makes a list of deputies easy to read.
  4. Under Manifest, choose the manifest its runs start from. You can bind one later, but the deputy cannot run until you do.
  5. If an Owner field is shown, choose Just me, a team, or Everyone in the organization. The default is Just me.
  6. Click Create.

The toast says “Hired” and the deputy’s name. Click the deputy to open its page. The About card there holds its time budget, concurrency limit, manifest, and compute, which you can change at any time.

Create a mission

  1. On the deputy’s page, in the Missions card, click New mission.

  2. Enter a Name, for example triage-issue.

  3. Write the Prompt. Put a variable wherever the prompt needs a value, with the {{.key}} syntax:

    Triage issue {{.issue}} in repo {{.repo}}. Label it, find the probable cause in the code, and post a summary as a comment.

    For a key with a hyphen, write {{index . "my-key"}}.

  4. Check the Inputs panel. Marshal finds each variable in the prompt. For each one, pick a type (string, number, boolean, enum, or url) and whether it is required. An optional input can have a default.

  5. Optional: set a Time budget in minutes. Leave it empty to use the deputy’s budget. The maximum is 1440 minutes.

  6. Optional: set a Run title, for example Triage {{.repo}}#{{.issue}}. It names each run in the Runs list.

  7. Click Create.

The mission starts as a draft, at version 1.

Try it, then activate it

  1. On the mission’s row, click Dry run. Fill in the inputs and check Rendered prompt (dry run). Nothing starts. You see exactly what the agent would get.
  2. When the prompt reads right, click Activate on the row.
  3. Click Launch, fill in the inputs, and click Launch.
  4. In the toast “Mission launched”, click Open run.

Change the prompt later and the mission gets a new version. Each run keeps the version that started it.

From the CLI

You create deputies and missions in the web app. From the CLI, you list them and launch them:

marshal deputies list marshal deputies missions release-warden marshal deputies launch release-warden --mission triage-issue \ --input repo=acme/api --input issue=42 --follow
  • --mission is required. marshal deputies missions <deputy> lists the slugs.
  • --input key=value can repeat, once per input.
  • --notes "..." adds extra instructions for this run only.
  • --follow streams the run’s output.

What you should see

  • The deputy on the Deputies page, with its description and mission count.
  • The mission in the Missions card, first as a draft, then active with a Launch button.
  • After a launch: the run page, with the deputy and mission in the header and the agent’s work in Activity. In the CLI: run <run-id> launched (<deputy> / <mission>).
  • If the deputy is at its concurrency limit, the toast says “Queued” and the launch starts when a run finishes.

Next

Let it run without you: run a mission on a schedule or event.