Get started
Five steps, and about ten minutes of it is waiting for an import. At the end your board draws itself from the work you were doing anyway, and there is no key to copy and nothing to remember to type.
Create your organisation
- Open codercat.io/signup/.
- Enter your work email address and the name of your organisation.
- Finish signing up.
The first person to sign up creates the organisation and owns it. Everybody else joins by invite link, which the owner sends from the members page. The organisation's domain comes from the owner's email address.
While TeamFlow is in its demo there is nothing to pay and no card to enter. Demo mode says what changes at launch.
Connect your sources
Your issues come from your tracker, not from your editor. Connect one and the board fills with the work you already have.
- Open the members page from the link in the dashboard. Only an owner can do this.
- Press Install on GitHub, or Connect Linear, and approve what the tracker shows you.
- You land back on the members page with the connection live.
TeamFlow then imports every open issue the connection can see, in the background, and the issues appear on the board as they arrive. Jira is connected by pasting a webhook instead; connect a tracker has all three.
Connecting a tracker is optional. Without one the board still draws what the plugin and CI report — it just starts empty.
Make your first project
A project is one or more repositories, with the tracker projects linked to them. It is how the board is divided up and what decides which issues get imported.
- Name the project.
- Choose the repositories that belong to it.
- Choose the tracker projects, teams or repositories whose issues it should carry.
A repository belongs to one project per organisation, and a session belongs to one project through its repository. Projects is the whole of it, including what happens to work that does not fit.
Install the plugin
In Claude Code, run these two lines in any repository of the project:
/plugin install teamflow@macleodlabs
/teamflow:login
From a shell instead, the same thing in two commands:
claude plugin marketplace add macleodlabs-ai/teamflow-plugin
claude plugin install teamflow@macleodlabs --scope user
Using something other than Claude Code? Other tools has the one line for each.
Signing in
/teamflow:login opens the browser you are already signed in to, and finishes by itself. There is no code to type and no key to paste. Complete whichever of Google, GitHub, a passkey or an emailed link you use, and the command returns.
If your terminal is on a different machine from your browser — a build box, a container, a server over SSH — use the device path instead:
npx -y github:macleodlabs-ai/teamflow-plugin login --device
That prints a short code in the terminal and a page to enter it on. Open the page in a browser anywhere, enter the code and approve. The command polls and finishes on its own. Ordinary sign-in cannot work across two machines, because it redirects to 127.0.0.1.
If your address holds a seat in more than one organisation, the command asks which one, or prints the list with their ids. Run it again with --org <id> to choose.
Only a revocable refresh token is stored on the machine. Reporting uses a one-hour access token that the plugin refreshes in the background.
Your first report
Now do some work. Edit a file, run your tests, merge a branch. The plugin's hooks classify each of those and post one report, and the ticket moves across the board on its own.
To check it arrived:
npx -y github:macleodlabs-ai/teamflow-plugin status
It prints who is signed in, which organisation the reports are credited to, which ticket is bound and what was last sent. If nothing is moving, troubleshooting is in the order that finds it fastest.
Nothing you type and nothing you write leaves the machine. What a report carries is the list, and it is enforced by the service rather than promised here.