Teams and organisations
Invariant works on your computer with no account. An organisation is what you add when a team works together: its projects, sessions and reviews are shared with every member, on every machine and on the web.
This machine and organisations
Every project belongs to one context:
- This machine (free, no account). Your projects, sessions and reviews stay in your folders. Everything shown as You is you.
- An organisation. The project is shared with the organisation's members. Its sessions live online, and each member's machine keeps a working copy in the usual
.invariant/sessions/folder, so agents work exactly as before.
A context belongs to a project, not to a window. A window shows one context at a time; switch with the context tiles on the left of the app, or from the avatar menu at the bottom of the rail (Switch to …). You can be signed in to several organisations at once. Each one keeps its own projects, groups and sign-in.
Every organisation is on Pro. On This machine, the Pro features show their own page instead, which explains them and offers the plans (see Get Pro).
Sign in
- Open the avatar menu and choose Sign in… (or Add an organisation… when you already have one).
- The sign-in screen opens your browser. Finish signing in there, and pick the organisation on the consent page.
- Back in the app, the organisation appears in the context tiles.
If the browser does not open, copy the link the screen shows. Continue locally (Esc) closes the screen and keeps you on This machine.
/assets/docs/teams-sign-in.webpThe first time you sign in, the app offers to move your local projects into the organisation. For each project, join one of the organisation's projects (when your repository is a clone of one) or create a new one, and pick a group. Keep them local leaves everything where it is; you can move projects later.
To sign out, open the avatar menu and choose Sign out of …. Projects of that organisation stay bound to it, marked signed out: local work goes on, and anything that needs the organisation waits until you sign in again (Sign in again).
Invite members
- Open the avatar menu and choose Invite members… (also on the Members page).
- Enter the person's name and email address, then Send invitation.
The invitation is sent by email. The person creates an account, or signs in, from that email and joins the organisation. Pending invitations show on the Members page with their expiry date, until the person joins. An address that already has an account in the organisation is refused. If your role does not allow inviting, the dialog says so.
Manage members
Open the avatar menu and choose Manage members, or search "members" in the command palette. The Members page lists who is in the organisation and the pending invitations.
- Cancel an invitation: the cancel button on its row.
- Remove a member: the remove button on their row, then confirm. They lose access right away and are signed out everywhere. Their sessions, reviews and comments stay, and you can invite them again. You cannot remove yourself.
/assets/docs/teams-members.webpOrganisation projects and groups
An organisation project is one project shared by every clone of the repository. When a repository first moves into an organisation, it receives a project id in invariant.json. Commit that file: every clone with the same id is the same organisation project, and a teammate who clones it and opens it lands in it.
To move a project from This machine into an organisation, use Move to… on its card in the hub. The project's sessions, archive included, are uploaded with their numbers. A project in an organisation stays there: only its creator can remove it from the organisation, and that removes it for everyone.
Groups belong to the organisation and are the same for every member. Each person keeps their own order and which groups are folded. Move group to… moves a group with every project it can. A project whose files are on another machine shows in the hub too; move or open it from that machine. See Hub and projects.
You cannot move a project while one of its sessions is in progress, nor straight from one organisation to another.
Sessions shared online
Everyone in the organisation sees the project's sessions. One machine writes a session at a time: the machine whose agent claimed it, or that saved it last. It holds the session's edit lock while the session is being planned or built, and releases it when the plan is ready or the work is done.
While someone else holds a session:
- The page says who holds it, with which agent, on which machine.
- You can respond: answer an interview round or a check-in, approve the plan or send it back, triage a review, comment, assign it. Your answer is queued and the holder's machine applies it. Until then it reads Answered — waiting for the holder's machine, with your name.
- You cannot edit: the contents, the status, the build mode and archiving are read-only. Only one answer per question is accepted; the second is refused and names who answered first.
To move a session to someone else:
- Hand off to… (on the holder's page) assigns the session to a member and releases the lock. It is refused while the work has uncommitted changes or unpushed commits.
- Take over… takes the lock from a machine that is gone. It is not offered while an agent is working under the lock; the page tells you whom to ask instead.
- Release frees the lock of a holder silent for 15 minutes or more.
The holder keeps working offline. Its changes go online when the connection is back. The app refreshes shared sessions every few seconds while they are open.
/assets/docs/teams-session-held.webpThe web workspace
Members can open the organisation's projects in a browser at app.invariant.guru/workspace, without the desktop app. The web never writes a session file itself: what you do there is applied by a member's machine that has the project, the holder's when there is one. A change made on the web therefore shows once a machine has applied it. See Desktop and web.
Comments and conversations
On an organisation session, review or Brain page, members discuss a passage, a block or the whole page.
- Select the text, or open the side panel's Comments tab (beside Contents).
- Choose New comment…, write your message and send it. Type
@to mention a member. - Reply in the thread, react with an emoji, edit or delete your own messages, and choose Resolve and share with the agent when it is settled. Reopen brings it back.
In the panel, J and K move to the next and previous conversation, and Esc goes back to the list.
Conversations never take the session's edit lock. Only resolved conversations reach the agent: the next time it asks the session what to do, it acts on them and acknowledges each one. When a planned session has resolved conversations waiting, the app offers to send the plan back with them. Editors and admins write; viewers read.
Peer approval
A project can require a teammate's approval before work starts.
- Open the project's Settings, then Plans.
- Turn on Require peer approval. Only owners of the organisation can change it.
With the rule on, whoever created or imported a session cannot approve its plan. Their Approve button is disabled and the plan reads Needs a teammate's approval; they can still send it back. Any other member who can write approves it, including the person the session was handed to. One approval is enough, and it starts a waiting agent unless the approver turns that off. The rule is checked by the app, the CLI and the organisation's server, so an older or modified CLI cannot skip it.
Share links
Copy link in the menu of a session, review or Brain page (and in the command palette) copies a link to the view on screen. A teammate opens it in the app or in the browser. A project that is not online yet has no link: the item is disabled and says why.
Notifications per person
In an organisation project, each member has their own inbox, the same on every device and on the web. You get a row when an agent needs you on a session you created, are assigned to or took part in, when someone mentions you, and when a session is assigned or handed off to you. You never get a row for your own act. Organisation inboxes keep every row. See Inbox and notifications.
Get Pro
On This machine, every Pro feature opens a page that shows it and then the plans:
| Plan | Price | What it adds |
|---|---|---|
| Local | $0 | The desktop app and the CLI, sessions, reviews and skills on your machine, any harness. Your files stay local. |
| Pro | $8 per user per month, billed yearly, before tax | An online workspace for your team, shared sessions and reviews, sign-in from the app and the CLI, notifications on every device and mentions, comments, peer approval, share links, and session translation. |
| Enterprise | Custom | Everything in Pro, with single sign-on and access control, self-hosting and data residency, invoicing and custom terms. |
Choosing a plan opens sign-up in your browser, at app.invariant.guru/signup, where the account and the payment are made. When the organisation exists, sign in to it from the app. A teammate you invite joins your organisation from their invitation email.
If the organisation's payment fails or its subscription ends, the context tile, the switcher and a banner say so (for example "Payment failed · ends 3 Nov"). An owner fixes it on the billing page of the web app. Once the grace period is over, the organisation refuses work until billing is fixed.
Translate a session
Every session has a language: the one its agent writes your plan, questions and summary in. It starts as your machine's language (Settings → Appearance, or invariant config set language fr), the agent switches it to your task's language on its first run, and you can change it from the language tag beside the status (FR ▾).
In an organisation, anyone who can read a session can translate it for teammates. Pick + Translate… in the language tag, choose a language, and paste the copied line into your own agent: it runs invariant translate, translates the text, and writes it back with invariant translate apply. Invariant never calls a model itself, code and paths are never translated, and running the session costs the same with translations as without.
Teammates then pick the language in the same tag. A translation is read-only; parts changed since it was made show in the original language, marked Outdated, until someone updates it.
From the terminal
invariant login # sign this machine in to an organisation (opens a browser)
invariant login --join # invited to a team: open the consent page on how to join
invariant whoami # the organisations this machine is signed in to
invariant projects move <path> --to <organisation> # move a project into an organisation
invariant session handoff <id> --to <member>
See Account and machine for every option.