madtea - the Hatter's teacup
madteaOPEN SOURCE · APACHE 2.0
it is always tea-time at madtea.lol

The tea-party your terminal was missing.

A forge client for Forgejo and Gitea - a table laid for two: you with a gh-style CLI, your agent with an MCP server. The dangerous commands were not locked away; they were simply never invited, and whatever refuses will tell you why and offer a wiser way.

INSTALL other platforms →

curl -fsSL https://codeberg.org/sixfold_space/madtea/releases/download/latest/madtea_linux_amd64.tar.gz | tar -xz
./madtea_linux_amd64/madtea install

CHAPTER I

Why this Tea-Party

“It’s always tea-time, and we’ve no time to wash the things between whiles.” — THE HATTER

Git tooling was written when the only guest at the keyboard was you. Seat an agent beside you, and the same familiar commands turn strange: a token wanders into a transcript and stays there; an issue is “tidied” and your repro steps are tidied away with it; a git reset --hard is reached for, and an afternoon's uncommitted work vanishes entirely - like the Cheshire Cat, but without so much as leaving the grin.

madtea lays the table differently: nothing dangerous is set on it in the first place. Ask for the missing knife and you are told, quite pleasantly, which spoon does the same job.

Tenniel: A Mad Tea-Party
The table was a large one, laid for a great many more than three.
THE SCENE
THE OLD WAY
THE MADTEA WAY
Your agent runs git remote -v.
A token embedded in the URL lands in its context, and in its logs, forever.
Nothing to leak. The token lives in your OS keychain and reaches git invisibly.
You ask it to tidy an issue.
It pastes its own summary over the whole body, and your repro steps with it.
madtea issue body patch swaps one exact span. Whole-body replace does not exist.
It reaches for git reset --hard.
Uncommitted work vanishes.
The command does not exist. The guardrail names the safe alternative.
Left alone with the backlog, it tries to delete a stale issue.
The issue is deleted before you ever see the request.
It cannot. Deletion is not on any madtea surface - the refusal points the agent to the forge web UI, where a human is.
Three green PRs land, and main turns red.
Revert and rerun CI by hand until you find the culprit.
madtea orchestrate merges the batch, tests them together, names the offender, reverts it.

THE TABLE IS LAID

It works with Forgejo and Gitea, and it is tested against Codeberg - where madtea lives, at a domain the Hatter picked out himself. The install lines are at the top of the page; everything else is in the docs.

“Begin at the beginning, and go on till you come to the end: then stop.” — THE KING

begin at the beginning → docs