Convoy AI

Product Station · Dev & ops

Framagit

CommunityBuilt with LauncherTemplate

Read repositories, open issues and merge requests, never touching the main branch.

The control station, in brief

This station sits between your agent and the tool. Before any call, it checks who is acting, shows only the useful tools, applies the rules below and keeps track of the task.

It can

  • Read repositories
  • Open an issue
  • Open a merge request

It asks a human for

  • Merge a merge request

It never has access to

  • Push to the main branch

Scenario Replays

An agent works through the station. Simulated scenarios, no real data, no key required.

Open an issue

What you will see: Reporting and proposing are free, deciding is not.

Agent connected to the station through MCP
  1. HumanReport the contact form bug.
  2. AgentI'll look at the repository, then open an issue.
  3. MCP callreadRepo(path: "formulaire")
  4. StationCode read.OKRule applied: profile contributor
  5. MCP callopenIssue(title: "Bug du formulaire de contact")
  6. StationIssue opened with the context attached.OKRule applied: playbook report-and-propose
These rules are not yours?

Copy the station, change a limit or an approval step in its configuration file, and get your own station.

Copy and adapt

The configuration in detail

framagit.yamlRead the docs →

Everything the station does fits in this file. The replay above applies it, and a copy starts from it. The values are examples to adapt, not a recommendation.

station:
  id: framagit
  kind: product
  policies:
    - {policy: human-for-merge, at: submit}

global:
  language: en
  timezone: Europe/Paris

apis:
  - id: framagit-repos
    operations:
      readRepo:            {access: read}
      openIssue:           {access: write, risk: low}
      openMergeRequest:    {access: write, risk: medium}
      mergeMergeRequest:   {access: write, risk: high}
    # not listed, so not available to the agent:
    # pushToMain

profiles:
  contributor:
    allow: [readRepo, openIssue, openMergeRequest, mergeMergeRequest]

policies:
  human-for-merge:
    type: rule
    when: "action == mergeMergeRequest"
    effect: needs-human
    reason: "A merge needs a human's review."

skills:
  - {id: read-repo, uses: readRepo}
  - {id: open-issue, uses: openIssue}
  - {id: open-merge-request, uses: openMergeRequest}
  - {id: merge-merge-request, uses: mergeMergeRequest}

playbooks:
  - id: report-and-propose
    tasks: [read-repo, open-issue, open-merge-request]

Shared copies

Copies that their authors choose to share will appear here. Each one keeps a link to this original station.