Build together in trmi
trmi is a desktop app where you, your teammates, and a coding agent work in one live session. You chat, talk over voice, and approve the agent's changes together. Every approved change lands in git.
01Start here
If you're new to trmi, follow these pages in order:
- Install and sign in — download the app and connect GitHub.
- Quickstart — open a project, ask the agent for a change, and approve it.
- Main and lanes — learn where to do each kind of work. This is the most important page in the docs.
02Guides
How trmi works
Projects, main, lanes, the room, hosts, and memory.
Read the guide →Talk to the agent
Message the room or ask the agent, steer a running turn, and stop it.
Read the guide →Approve changes
Vote cards, risk tiers, and who gets a say.
Read the guide →Invite people
Add friends to a project, share a session, and talk over voice.
Read the guide →Ship with pull requests
Lane branches, Create PR, and getting work into your repository.
Read the guide →Run in the cloud
Keep the agent working after everyone closes their laptops.
Read the guide →03Get help
If something doesn't work, see Troubleshooting. For terms you don't recognize, see the Glossary.
Join us on Discord
Report a bug, suggest a feature, or ask the team a question. Your feedback shapes what we build next.
Quickstart
This quickstart shows you how to open a project in trmi, ask the agent for a change, approve it, and open a pull request. It takes about five minutes.
Before you begin
- Install the trmi desktop app. See Install and sign in.
- Have a GitHub account. trmi uses it to sign you in and to push your work.
- Have a project folder or a GitHub repository you want to work on.
Make your first change
- Create a project.On the home screen, click Create project. Choose a folder on your computer or a GitHub repository. trmi opens the project in its main session.
- Ask the agent.Type what you want in the composer, for example
add a dark mode toggle to the settings page, and press ⌘ ↵ (Ctrl ↵ on Windows). - Approve the change.The agent reads your code and proposes each edit as a card. Review the diff on the card, then click approve. trmi commits and pushes the change.
- Open a pull request.When you're done, click Create PR below the composer. trmi opens a GitHub pull request with a summary of what changed.
You don't need to commit, branch, or push yourself. trmi does it for every approved change, and the agent never commits to your own main branch.
What's next
- Learn where to do bigger work: Main and lanes.
- Bring your team: Invite people.
Install and sign in
This page explains how to install the trmi desktop app on macOS or Windows and sign in with GitHub.
System requirements
| platform | download |
|---|---|
| macOS | Apple silicon · Intel |
| Windows | x64 · ARM64 |
Install the app
- Download the installer.Choose the build for your computer from the table above.
- Run the installer.On macOS, drag trmi to your Applications folder. On Windows, run the
.exeand follow the prompts. - Open trmi.The app checks for updates on launch and installs them for you.
Sign in
- Click Continue with GitHub.Your browser opens GitHub's authorization page.
- Authorize trmi.trmi asks for access to the repositories you choose, so it can create branches and open pull requests.
- Return to the app.You land on the home screen, ready to create or join a project.
trmi never reads your local git credentials or SSH keys. Pushes go through trmi's GitHub App with the access you granted.
What's next
- Quickstart — make your first change.
How trmi works
This page describes the six ideas behind trmi. Once you understand them, the rest of the app follows.
01Projects
A project is your code plus everything your team shares about it: members, a task board, sessions, and memory. Each project is backed by one GitHub repository.
02Main
Every project has one main session. It's the project's home room: the board, the member list, and the voice call live there. Changes you approve in main commit to the project's main branch on GitHub — the branch everyone builds on.
03Lanes
A lane is a separate session with its own branch, its own copy of the code, and its own agent. Use a lane for a feature or fix that takes more than a few changes. Lanes run in parallel, and you merge each one back into main with a pull request.
04The room
The room is what you see inside any session: the chat, the people present, the agent's work, and vote cards. Everyone in the room sees the same thing at the same time.
05Hosts
A host is the machine that runs a session's agent and holds its copy of the code. Usually that's the computer of the person who opened the session. You can move a session to a cloud host so it keeps running when your laptop is closed.
06Memory
trmi records what each session decided in a shared project journal. Every new session can read it, so the agent knows what other lanes are doing and what the team already settled. See Project memory.
What's next
- Main and lanes — when to use each one.
Main and lanes
This page explains what the main session is for, when to start a lane instead, and how work moves from a lane back into main.
Use main to plan, coordinate, and make small changes everyone needs right away. Use a lane for any feature or fix you'd normally put on its own branch.
How work flows
Every lane starts from the latest version of main on GitHub and comes back to main with a pull request.
- Create a lane. trmi creates the lane's branch on GitHub from the latest main, so the lane begins with everything already merged.
- Work in the lane. Each change you approve commits to the lane's branch. Main and other lanes don't change.
- Create PR. trmi opens a pull request from the lane into main. When it merges, every session picks up the change.
What main is for
Main is the project's shared room. Open it when you want to:
- Plan and discuss. Talk through an idea with your team and the agent before anyone writes code.
- Manage the board. Add tasks, see who took what, and mark work done.
- See every lane at a glance. The sidebar lists each lane with who's in it and what it's doing.
- Make small, shared changes. A config value, a typo, a dependency bump — changes everyone should get right away.
- Review what landed. See what each lane merged into main.
Changes approved in main commit straight to main, so every new lane starts with them. Keep main changes small. If a change needs more than a few edits or might break something, start a lane.
What you can do in each
| task | main | lane |
|---|---|---|
| Chat, voice, and ask the agent | yes | yes |
| Manage the project board | yes | yes |
| Commit to main directly | yes | no — via PR |
| Work without affecting others | no | yes |
| Open a PR into main | — | yes |
| Archive when done | no | yes |
Start a lane
- Open the project.In the sidebar, find the project's session list.
- Click + lane.Give the lane a short name that says what it's for, like
billing-page. - Start working.trmi creates a branch on GitHub and opens the lane. If the project folder is on your computer, your machine hosts the lane's agent in its own copy of the code.
If the project folder isn't on your computer, the lane still exists. Anyone with the folder can host it, or you can run it in the cloud.
Keep a lane up to date
When another lane merges, main moves ahead of your lane. trmi shows a notice at the top of the room. Click Update this session from the project line (the app's name for main) to bring the new changes into your lane. Main updates itself before every agent turn.
Finish a lane
- Click Create PR.trmi opens a pull request from the lane into main, with a summary of the changes.
- Merge it.Review and merge the pull request on GitHub.
- Archive the lane.Archived lanes leave the sidebar but stay searchable.
What's next
- Ship with pull requests — how work reaches your repository.
- Overlap warnings — what happens when two lanes touch the same file.
Talk to the agent
This page explains how to send messages to people and to the agent, how to change direction while the agent works, and how to stop it.
Message the room or the agent
| to send to | press |
|---|---|
| The people in the room | ↵ |
| The agent | ⌘ ↵ on macOS · Ctrl ↵ on Windows |
When you're alone in a session, every message goes to the agent. You can also start a message with @trmi to address the agent.
Steer a running turn
You don't have to wait for the agent to finish. Send another message to the agent while it works, and it treats your message as a correction to the current task. Anyone in the room can steer.
Attach images
Paste a screenshot into the composer, or drag one onto the chat. trmi accepts PNG, JPEG, WebP, and GIF images.
Set effort
The effort control below the composer sets how hard the agent thinks: auto, low, medium, high, or max. Higher effort is slower and costs more.
Stop the agent
If the session runs on your computer, press Esc with an empty composer while the agent is working. Anyone else in the room can type /stop. Changes the agent already made stay.
Approve changes
The agent proposes every file edit and command as a card. This page explains how cards work, how risk changes them, and how to choose who approves.
How cards work
Each card shows what the agent wants to do — a diff for edits, the exact command for shell actions. Approve it and trmi applies the change, commits it, and pushes it. Deny it and add a reason, and the agent adjusts.
Risk tiers
| tier | examples | what happens |
|---|---|---|
| Routine | Edit a file, run tests | One approval clears it. |
| Breaking | Delete files, migrate a database, force-push | The whole room sees the full risk: what breaks and how to recover. |
| Decision | Two valid designs | The agent asks the room to choose. |
Choose who approves
Click the approvals control below the composer and choose a mode:
| mode | behavior |
|---|---|
| Everyone | Every change waits for the whole room. |
| Majority | More than half the room passes it. |
| Host | The host's owner decides. If they're away, everyone votes. |
| Auto | No cards. Changes apply as the agent makes them; the agent's questions still go to the room. |
In Auto, risky changes apply without a vote too. Use it in a lane, not in main.
Choose a model
trmi works with the coding agent you already pay for, or with trmi's own models. The room, votes, and git history work the same either way.
Bring your own subscription
Plug in Claude, Codex, Pi, or another supported agent. It runs with your own account and limits.
Use trmi's models
If you don't have a subscription, pick one of trmi's models. You don't need an API key.
Switch models
Click the model control in the composer and choose a model. The change applies to the current session only.
Who pays
The person who asks the agent pays for that turn. The status bar shows how much each session has spent.
Invite people
This page explains how to add teammates to a project and bring them into a session.
Add a friend
trmi invites go to friends. Open the + face in the room's header, search for a person's GitHub username, and send a friend request. They accept it from their own app.
Invite to a project
- Open the invite card.Click the + face in the room's header.
- Choose friends.Select one or more friends. Each shows as pending until they accept.
- They join.Once they accept, the project appears on their home screen with every session.
Only project members can join a project's sessions. A session id on its own doesn't grant access.
Talking in a full room
With others present, ↵ sends to people and ⌘ ↵ sends to the agent, so you can talk freely without starting agent turns.
Voice and presence
Every project has one ambient voice call, and the room shows who is where.
Voice
You join the project's call automatically when you open a session, with your microphone muted. Unmute from the profile bar at the bottom of the sidebar. The call spans main and every lane, so moving between sessions doesn't drop you.
Presence
Each person gets a seat color. Faces in the sidebar show who's in which session, and the file tree highlights the files each person is working on.
Overlap warnings
trmi warns you when two lanes change the same file or work toward the same goal, before the conflict reaches a pull request.
File overlap
When the agent in your lane edits a file another lane already changed, the card shows which lane touched it and what it changed. You can wait for the other lane, work around it, or continue.
Intent overlap
trmi also compares what each lane is trying to do. If two lanes are solving the same problem, the agent mentions it so you can coordinate in main.
Ship with pull requests
This page explains how trmi uses branches and pull requests so that your work reaches your repository safely.
Session branches
Each lane has its own branch. trmi commits and pushes every approved change, so the branch always matches what the room approved. The branch name appears at the bottom-right of the composer.
Open a pull request
Click Create PR below the composer. trmi opens a pull request from the lane's branch into main, with a description written from the changes. Each session has one open pull request at a time.
Your repository's default branch
trmi's main is a branch trmi keeps on GitHub for the project. The agent never commits to your repository's own default branch. When you're ready, the project owner merges trmi's main into it with a pull request.
Review changes
Click the +/− chip below the composer to see everything this session changed, side by side.
Preview your app
Ask the agent to start your dev server, then open it in trmi's built-in browser or share it with the room.
Open a preview
When a dev server is running, a preview chip with its port appears below the composer. Click it to open the page in the browser beside the room.
Share a public link
Ask the agent to share the preview. trmi creates a public link and posts it to the room so teammates on other machines can open it.
A preview link points at a port on the host. If the dev server stops, the link stops working until it restarts.
Connectors
Connectors give the agent access to other tools — your issue tracker, your database, your cloud provider. They use the Model Context Protocol (MCP).
Add a connector
- Open Connectors.Click Connectors in the app.
- Install a server.Choose one from the list, or add your own MCP server.
- Sign in if asked.Some connectors need your account. Until you sign in, the agent can only ask you to connect.
Connector tool calls follow the same approval rules as any other change.
Project memory
trmi remembers what your team decided, so you don't explain it twice.
The project journal
After each agent turn, trmi records what happened in the project journal. When you start a turn, the agent searches the journal for related work in other lanes and uses it as context.
Memory in the repository
Decisions and known pitfalls are saved in the .termi/ folder and committed with your code, so they travel with the repository.
.termi/
decisions.md # what the team chose, and why
gotchas.md # sharp edges, recorded onceRun in the cloud
A cloud host runs a session on a remote machine, so the agent keeps working when everyone's laptop is closed.
Move a session to the cloud
In the session, type /cloud in the composer. The cloud host takes over the session's agent and its branch, and you can rejoin from any computer. To bring the agent back to your machine, type /cloud stop.
Environment variables
The cloud host receives the project's .env files from the person who moved it, so your app can run there. These files are never committed to git.
When a cloud lane starts
A cloud lane doesn't start a machine until someone sends its first message. When it wakes, it pulls the latest main and reads the recent conversation.
Troubleshooting
This page lists common problems and how to fix them.
The agent doesn't respond
- Check that you pressed ⌘ ↵. Plain ↵ sends only to people when others are present.
- Check that the session has a host. A lane with no host has no agent — open it on a computer with the project folder, or run it in the cloud.
A commit isn't on my computer
The commit lives on its author's host until it's pushed. Wait for the push, then update your session from main.
No one can hear me
You join every call muted. Unmute from the profile bar at the bottom of the sidebar.
A preview link doesn't load
The dev server on the host stopped. Ask the agent to restart it and share the preview again.
A connector's tools are missing
The connector is waiting for you to sign in. Open Connectors and click Connect.
Still stuck?
Ask in the trmi Discord. Include your platform, what you tried, and any message trmi showed you.
Glossary
Terms used across trmi and these docs.
| term | meaning |
|---|---|
| Project | Your repository plus its members, board, sessions, and memory. |
| Main | The project's home session, and the branch on GitHub it commits to. New lanes start from it. |
| Lane | A parallel session with its own branch, code copy, and agent. |
| Room | The live view of a session: chat, people, the agent, and cards. |
| Card | A proposed change waiting for approval. |
| Host | The machine that runs a session's agent. |
| Steer | A message sent while the agent works, which redirects the current task. |
| Connector | An MCP server that adds tools for the agent. |