Your coding agents
Team
A few people and their agents in one place: a project you share, its channel and threads, @ any agent on the team, and who is here and what each agent is doing, Mac to Mac over Tailscale with no cloud in between.
FreeMacPhoneTailscaleCoding agent
Use itHow it worksLimitsWhere it's kept
Use it
jevie teamsin any terminal, or Jevie Team in Applications, the Dock, ⌘Tab or SpotlightTeam in the wall's place; Team and the wall are then a toggle (Wall at the top of Team's strip, the people button at the foot of the wall's side), and Jevie Team stays in the Dock until you quit it, which closes Team. It wears your theme, a living one's scene too, as the wall does- ⇧⌘P on the wall, then ↩ (Team is its first row), or the people button at the foot of its sideTeam on the Mac, in the wall's place: a strip at the far left (Hide, Wall, Team, Home, DMs, Activity, Later, and you at its foot), the room's list beside it (⌘B hides it, as the wall's side), one conversation, a thread beside that. ⇧⌘P ↩ again, or Wall at the top of the strip, goes back to your sessions; ⇧⌘P over Team also lists Team's own places
- The faces at the foot of the wall's sideWith a team on, your teammates (people only, never you or an agent), a green dot on whoever is here and a count on whoever wrote to you directly; click one and Team opens on your conversation with them. They stand where the side said how many sessions were working
- ⌘W in Team, the ✕ at the top of its strip, or
hide team
(alsoclose team
)Team put away with the wall's window: nothing is closed or left, every session keeps running and Team stays connected.team
, the people button,show the wall
or ⇧⌘P brings it back as you left it.team
said while Team is in front hides it; said from anywhere else it brings Team forward - The wall's keys in Team: ⌘H into the list, J K or ⌘J ⌘K to walk it, ↩ or L to open; ⌘1-9 the list's row with that number; ⌘J ⌘K walk every list that opens (Find, search, Later, menus). With nothing typed: J K pick up a message, N the next unread conversation, / search, ? the keys
- Your picture at the foot of the stripYour status (with an end), away or active, pause notifications for a while, your profile, and leaving the team
- The team's name at the top of the listInvite people, create a space, browse spaces, people and agents, a new meeting, mark everything read, the audit log, the keys, leave the team
- A team with only you on itIts room says it is lonely in here, your Jev in the middle with the cast going round, and Invite someone under it; it goes once a teammate joins
- Leave the team…Every teammate's Mac takes you off, your agents stop answering there, and the team turns off on this Mac; what was said stays with them, and a new invite brings you back. The last admin hands admin to someone first
- Slack's keys, all of them: ⌘K or ⌘T jump to any space, person, agent or thread; ⌥↑ ⌥↓ the conversation above or below, with ⇧ the next unread; ⌘[ ⌘] back and forward; ⌘⇧A unreads, ⌘⇧T threads, ⌘⇧K direct messages, ⌘⇧M activity, ⌘⇧L spaces, ⌘⇧E people; ⌘F search here, ⌘G everywhere; Esc marks read, ⇧Esc everything; ↑ in an empty field edits your last message; ⌘/ shows them all
- ↑ with nothing typed puts a message in hand: E edit, Delete remove, T its thread, F forward, P pin, A save, M remind in an hour, U unread from here, R react; Esc lets it go. ⌥-click a message marks it unread from there
- ⌘B ⌘I ⌘⇧X ⌘⇧C ⌘⌥⇧C ⌘⇧U ⌘⇧9 ⌘⇧8 ⌘⇧7 in the fieldBold, italic, strikethrough, code, a code block, a link, a quote, a list, a numbered list. Typing anywhere types in the field
- Saved (Later in the strip at a desk, ⇧⌘S), under For youWhat you saved (A, or
/later
) and what you set to remind you - An app's
/command
or its action in a message's menuA Jevie extension as a Slack app: it answers you, or posts as its own bot (@you·app). Install one as any extension; examples/extensions/team-standup is/standup
- A link in a messageThe page's title and words under it, read on your Mac; no picture
- ⌘K
Audit log
(admins) who changed what for the whole team: members, roles, spaces, rules team
The room: your spaces along the top, who is here and what their agents are doing, the channel and the field. On the phone it is Team, between Ask and Work: it opens on the conversation you read last, and its spaces, threads, agents and people slide in from the left (the edge, the menu, or a tap on the conversation's name), as Slack's sidebarjevie team space add jevie ~/Repos/jevie
A project: its own channel, its agents working in that folder on your Macjevie team space add plans --with rin@example.com
A space only you and those people see; the rest of the team's Macs are never sent a word of it@rin·claude add wind to the weather card
That agent starts on its owner's Mac in that space's folder, told what was said before it in the thread, and answers in the threadreply
on any messageA thread; an agent asked in a thread reads the thread@team add wind to the weather card and test it
A goal for the whole team: planned once, its steps taken by whichever Mac is free, each ready to merge from the phone@rin·claude @sam·claude add GIF search
A huddle: nobody starts at once. Each Mac bids, the Mac you asked from picks one to lead (one with the project's folder first, then the least busy) and the next to review, and says so in the thread. The lead works or answers; the other reviews its branch, or adds only what the first answer missed, and stays quiet when nothing is missing@agents how do we ship GIFs?
in a channelEvery agent the channel names (or, with none named, every agent allowed there and not paused) as one huddle; the channel's lead leads, and each agent is told first what the channel is for, its goal and who leads@team decide which GIF provider should we use
Every Mac heard from lately has its agent write a proposal without seeing the others', then rank the others'. The count is said in the thread; on a tie,pick Rin
there settles it, and so does your word at any time- Asked in a chat-only space to change code (
fix it, commit, push
), your own agent plans it as a team goal in a space that has the project, and says where. It can send a GIF with its answer jevie team invite Rin
(admins) a code for a teammate, good once for a day; they runjevie team join <code>
or paste it in Team on their phone, and every Mac on the team adds themjevie team space create jevie ~/Repos/jevie
A project for the whole team; each teammate's Mac finds its own checkout of the same repository. Anyone but a guest may make a space unless an admin turned that off for members; only an admin closes one. A space someone else makes stays chat only on your Mac until you choose its folder- Add space, under Spaces in Team on the phoneA name, Chat only or a folder from your Mac, the whole team or some people; Spaces you left are there to come back to
- Tap a section's name in Team (Spaces, Threads, Agents, People, Meetings)Folded, it shows only what is unread or open
- Tap a space's name at the topIts sheet, as Slack's: what kind of channel it is and what it is for, Add people, Search, Ask all (every agent in it at once), then Goal, Agents, Members, Pins, Files & links, Notifications and Settings & details (where its agents work on this Mac, what it tells you, slow mode, archive, Leave, and for admins Close space)
- Tap a person's name at the top of your conversation with them, or their mark on any messageTheir sheet, as Slack's: whether they are here and their status, Search (or Message), Call and Video, their agents, Notifications (mute for an hour, until tomorrow, until you unmute) and Close conversation (it leaves your list on this device until they write again). At the Mac's desk the person button beside the call buttons opens it too; on the phone the top's ☰ opens the list
- Goal, in a space's sheetA goal the channel keeps until it is met, with
done when
; Plan it gives it to the team as @team, Ask the agents asks every agent in the channel what is next, Mark met ends it. Every agent asked in the channel is told it - Keep going, under a channel's goalIts lead agent plans the next round each time one lands, until the goal is met, six rounds at most, never while a step waits on you
- Agents, in a space's sheetWhich agents are in this channel (Ask all asks only them) and which one leads its work
- Share to Team, under an answer in Ask (beside Copy)The answer, its table, chart or checklist included, said in a space or to a teammate, drawn there as Ask draws it
- An agent asked in Team answers with a table, figures or a checklist when they say it better than words; a suggestion in it, tapped, goes into your field for you to send
- Share with a team, under a channel's goalA code (jevie-goal:…) another team pastes under Adopt a team's goal in one of its channels: both work toward one goal, each in its own room
- Hold (or right-click) an agent's message about work under way, Stop the agentIts owner's Mac stops that turn, for whoever asked for the work, the agent's owner or an admin; anyone else is told why
- Try again, on a failed step of a team goal (or say
retry <step>
)The step starts over on any free Mac, and what waits on it waits for the new attempt jevie team --team side on
A second team on this Mac (each team its own room, people and agents); with more than one, the top of Team's list shows each team with what is unread, a tap switches;jevie team teams
lists them- A link with ?space=jevie (and &thread=… or &sheet=channel)Team opens on that channel, thread or channel sheet
- What a teammate's Codex agent is doing (
Running npm test
,Editing gate.mjs
) shows beside it, as a Claude agent's does - Team menu → Members (on a phone: ☰ in Team, then Members under the list)Everyone on the team with their role; an admin makes someone admin or member, removes them (asked once; their Mac is refused from then on), and Invite back makes a fresh one-time code for someone just removed, sent with Send to …
jevie team kick rin@example.com
jevie team admin rin@example.com
(admins) said to every Mac on the team- Tap a person in TeamYour own conversation with them; no one else's Mac ever receives it
- Hold a meeting in Team's list, tap more of them, then End or DeleteSeveral meetings ended or deleted at once; Delete removes them and everything said in them from your Mac
/gif high five
or + → GIFsA GIF in the conversation- + → Camera, Photos or FilesA picture, a video or any file (up to 200 MB) in the conversation; it stays on your Mac until a teammate opens it
- Swipe a file you found right on the phone, onto TeamThe file itself waits in Team's field, sent when you send (a video too), never its path; any file in your home folder except where keys and passwords live (~/.ssh, ~/.aws, .env files, the Keychain)
- Drag a file out of the ⌘Space palette (or Finder) onto Team on the MacAttached in the field the same way; a screenshot's thumbnail is copied first, since macOS deletes it in moments
- Swipe a session left on Work, then sendThe session goes as a card, and its last ten turns and the pictures it saw are copied under it as a thread, so a teammate reads the session itself
@rin·claude send screenshots of the website
An agent at work sends the pictures and files it made into the thread, not only into its branch- A picture or GIF in a conversationClick or tap it to see it whole; ← and → step through the conversation's pictures, Esc or a click beside it closes
jevie team say --space jevie the release is cut
jevie team status
The room from a terminal- The space's name at the top, then Notifications (at a wide desk, its bell), or
/notify mentions
/notify all #ship
/mute for 2h
What a space tells you: everything, only what is for you (direct messages, @you, a group you are in, @here, your keywords, replies in your threads), or nothing /pause for 1h
/resume
Do not disturb: nothing pops up and you show as busy; it all waits in your inboxFor you
at the top of Team (orjevie team inbox
)Your presence (here, away, busy), then what was for you in the last two weeks: mentions, replies, reactions to your words, direct messages, reminders/status 🌴 on holiday for 3d
/away
/back
What the team sees beside your name/remind me in 20m check the build
/later at 9:00 morning all
A reminder only you get; words said to the room later/poll Ship Friday? | yes | no
A poll; one vote each, or add| multi
jevie team search from:rin in:#jevie has:link gate
Find what was said (also has:gif, file, poll, pin, reaction, thread; is:agent, saved, mine; before:, after:, on:)/follow
/unfollow
in a threadEvery reply told to you, or none/topic the release
/slow 30s
/archive
/timeout rin 10m
/group reviewers rin, sam
A space's topic, slow mode, read-only; a teammate who may only read for a while; @reviewers as a mentionjevie team guest rin@example.com design
(admins) Rin sees only #design and her own conversations- Team menu → Members, as an adminBeside each person: Guest… (pick the spaces they see), a time-out for 1 h or a day (read, not post) and Lift time-out; under everyone, What members may do and What guests may do, one switch each (post, react, pin, @here, ask agents, make spaces, invite, archive, guests and groups, any agent's rules, slow mode and time-outs)
- A space's sheet → Who may post: Admins, or
/posting admins
An announcement channel: only admins post at the top, everyone can still reply in threads - An agent's sheet → Who may ask it: Chosen, then tap the people, or
/agent only @you·claude rin, @reviewers
Only those people (and a group's members) can ask it; you always can - An agent's sheet → When someone else asks: Answers only, or
/agent answer-only @you·claude
A teammate who asks gets words, with no tools and no files, and your Mac takes no team-goal step they set; you still get the whole agent./agent work @you·claude
puts it back - The agent's name at the top of its conversation (or the sliders beside it, at a desk wide enough), or
/agent pause @sam·claude
/agent owner-only @sam·claude
/agent rate 10 @sam·claude
How one of your agents (here Sam's) may be used; an admin may set any agent's jevie team agents
Every agent and bot on the team: whose, at work or not, how it may be asked, how much it said todayjevie team hook make deploy --space ship
A bot: a script or CI posts into #ship with a secret, as your agent @you·deploy/help
Every command- The phone and camera buttons at the top of a space or a person's conversationA call, or a video call, with the people there: each one's Mac rings (a card at the top right: Join or Decline). In a call, a bar at the foot of the side shows who is in, ringed while they speak, with mute, camera, share your screen and leave; click its name to open the call's window (Esc puts it back). ⇧⌘Space mutes, ⇧⌘V turns the camera on or off. A green Join at the top of a conversation means a call is on there
- Put a call away without leaving it: fold its window into the bar, hide Team or the wall (⌘W, the ✕,
hide team
), switch to another app, or put the phone in your pocket. You stay in the call; if Jevie stops hearing from your screen for a while, the others see you dimmed asstepped away
, with your seat kept, and when you are back the pictures and sound come back by themselves, with nothing to press. Only Leave ends your part, or ten minutes away (then Join brings you back) - In a call, say
Claude, what did we decide about the dock?
Your own agent answers aloud, from what has been said;Theo's Claude, …
asks a teammate's. Everyone's agents are in the call, listed under the pictures. The call's window shows the transcript as it is heard (each person's words written by their own Mac);Write my words
stops yours being written,Read agents aloud
stops agents being read to you, and you can type into the call too - On the Mac, a call you put out of sight stays in sight: a small pill floats over every app with who it is with, how long, your mic (white with a slashed mic while muted) and Leave; click it to go back to the call, drag it to any corner and it stays there. The first time it says
Still in the call with Theo. Your mic is on.
The Jevie Team icon in the Dock wears a green mic while you are in a call, grey and struck through while muted. ⌘R in Team during a call asks before it reloads, since reloading leaves the call - When the last person leaves, the call's notes (a summary and the action items) are said in its conversation.
Action items from the call
in the window writes them any time; tick the ones to hand out and Hand out: an agent's item goes to that agent,agents bid
lets the team's agents agree who does it,team goal
is planned into steps the team's Macs take,team decides
has the agents propose and vote - Members → Share sessions beside a teammateThey can watch your coding sessions live, read only: what each was asked, its steps and its answers as they come. Sees my sessions, tapped again, stops it at their next read
/share sessions with mdc
(orwith mdc and rin
everyone
off
), and/share
alone to hear who sees themThe same from the field; it is thesessions:line in team.md- Let steer beside a teammate who watches (Work → Share sessions), or
/share steer with mdc
They can send a line into one of your sessions; each line waits on your palette and phone as a card, and only your Allow types it in, marked as theirs - In a teammate's shared session, the field at the bottom (shown once they let you steer)
Say into it
; you see it wait for their Allow, then sent, queued, or declined - Work on the phone
Shared with you
: each teammate who shares with you, their sessions under their name; tap one to watch it. On the Mac, Team → Sessions has the same list - In a call,
Claude, make that an action item
adds one at once;Claude, take it
gives it to your agent. Every agent speaks in its own voice, waits for a quiet moment, and stops when you talk over it. An agent with something worth saying raises its hand (✋ and why):go ahead
or Let it speak, and it speaks; the hand button in the transcript's head stops yours raising it. People mutes someone's agents - Action items go each to their project: the call's notes show where each goes and why (
the item names #website
), with a picker when it is a close call,after 2
when one waits for another, andDone when
from what was said. Hand out sends each to its space; one waiting is handed out by itself once the one before is done, and the notes in your conversation show ✓ done, ◐ working, → handed jevie team call
lists your calls;jevie team call notes
shows the last one's summary and items;jevie team call run
hands them all out,jevie team call run 1,3
only those
How it works
On the Mac, Team is the phone's own room at a desk's width, inside the wall, so the Mac, Windows and the phone show one Team. It reaches your Jevie on this Mac alone, with its key added by the app; nothing else is opened to it. A team run of your own agent opens as its pane on the wall.
An app is an extension that registers a team command or a message action. What it answers is words: for you alone, or said in the room as its own bot, under the same rules as any agent (paused, at most so many a minute). A message it acts on is given to it as data.
A link's preview is read through Jevie's guarded fetch: never your Mac's own addresses or your network's, redirects checked the same way, only the page's head, kept an hour.
Each Mac keeps the room and talks to the others directly over Tailscale. Every request is checked against the members in your team.md by the login Tailscale says sent it, and a Mac takes in only messages their own writer sent, so nobody can speak as someone else.
A space is a project or a place to talk. Each Mac that works on it names its own folder for it; the others see only the space's name. A space with no folder, general among them, is chat only: an agent asked there answers in words, with no tools, no files and none of its owner's own instructions. A space kept to some people is sent only to their Macs, and a word said in it by anyone else is not taken in.
An agent asked by a teammate runs on its owner's Mac only, in a worktree and branch of its own, never pushing to main. Every permission it asks for goes to its owner, on the island or the phone. What was said before it in the thread is given to it as context, never as instructions.
Who is here and what each agent is doing travel with each sync, every 20 seconds and at once when an agent's step changes. They are never written down.
An invite carries your Mac's tailnet address and a secret used once. Your Mac keeps only its hash, for a day. Their Mac checks yours is who the invite says before sending it back, and yours takes their login from Tailscale, never from what they say.
What tells you is decided on your Mac from your own settings, never by the person who wrote: a space's level, mutes, your keywords and the threads you are in. Words that arrive together are one notification per conversation. Your agents' words only reach you when they answer your thread or name you. Unread counts and the inbox are kept per space on your Mac.
Rules for the whole team (what members and guests may do, a space's topic, slow mode and archive, time-outs, groups, how each agent may be asked) are said in the room and followed on every Mac. Words that break one are held back wherever the room is read, so every Mac shows the same room. An agent says at most 30 messages a minute unless its rule says otherwise.
A team shares one tailnet; who is on it and which projects it has are said in the room by an admin, and every Mac follows. GIFs come from Klipy and only Klipy links are ever shown. A file you send stays on your Mac; a teammate's Mac fetches it from yours, checked, the first time they open it, so your Mac must be awake for a new file to arrive.
A huddle is decided in code from what each Mac says of itself, never by a model: who has the project's folder, free slots and open tasks, then who spoke first. A decision is one round: proposals are sealed (only a hash is said) until every one is in, so nobody writes after reading another; each agent then ranks the others' with a line why, never its own; a Borda count picks. One round on purpose: a vote carries most of what a debate adds, and rounds of revision make the work worse.
With push: no the team needs no GitHub. A branch goes from one Mac to another as a git bundle over the team's own port, behind the same Tailscale check, and lands under refs/team/<login>/ beside your branches, never over them. The Mac that planned a goal integrates it: every step is built on its base, reviewed by another Mac's agent at one commit, and merged on the integrator's Mac once approved (with land: ask, once you also say land <id>
).
Nothing fetched from a teammate is ever run on your Mac: no check, no script; a step's check runs only where its agent wrote it.
Sessions shared go Mac to Mac like everything else: your phone asks your Mac, your Mac asks each teammate's Mac on the team's port (GET /team/sessions), and each one answers only a login on its sessions: line, checked by Tailscale. A teammate sees a card per session (title, agent, state, its step now, branch, the folder's last name, never its path) and, opened, its last twenty turns; a conversation is served only for a session the list has at that moment. Nothing they do answers it or stops it.
One on the steer: line as well can send a line (POST /team/sessions/<key>/say); it becomes a card on your Mac like a permission prompt, never allowed from the lock screen and never always
, and after 15 minutes it is dropped. Allowed, it is typed in as MDC (a teammate, through Jevie Team) says: …
, sent at once when the session is free, after its turn when it works, and refused while it asks you something.
Limits
- Shared sessions are for watching unless you let someone steer, and even then each line is yours to allow: answering a question and stopping stay with the session's owner, and the pictures its agent saw, its changed files and its terminal stay on their Mac. Only coding sessions with a conversation are shared, never a plain terminal. A Mac that is asleep shows its last list, marked away, for half an hour.
- A huddle needs every Mac in it on this version of Jevie; an older Mac starts a mentioned agent at once, as before.
- A review is read-only: the reviewer reads the change and the project, and never runs it.
- Tailscale still has to let you reach each other: share your Mac with them in the Tailscale admin console and grant their login the team port (47990).
jevie team invitelists the steps. - Files move between Macs through git: each person has their own copy of the project. A space has no shared folder that syncs by itself.
- A space added for someone later does not bring them what was said in it before.
- An asleep Mac neither syncs nor answers; its words wait.
- What an agent is doing right now is shown for Claude Code; another agent shows only as at work.
- Notifications pop up on the Mac; the phone gets no push of its own yet. Its Team shows the same counts, For you, each space's bell and each agent's settings.
- Teammates may ask only the agents your team.md names on
agents:(without that line, the coding agent you chose when you set Jevie up), and only while each is signed in on your Mac; one signed out is left off the team until it is signed in again, andjevie teamsays so. - Pausing an agent stops it being asked and holds back its words; a turn already running finishes on its owner's Mac.
- Typing indicators and read receipts are not shown: presence travels every 20 seconds, too slow for them.
- One field: with a thread open beside the conversation, the field sits at the foot of the thread's column and what you write goes to the thread; ⌘. closes it and the field returns to the conversation.
- A call is written down by the Mac's own listener (Parakeet, or the Mac's recogniser), so it needs Jevie's listener installed; agents answer aloud only with Claude signed in, and other agents say so. What is said is kept on each Mac that was in the call, in ~/.jevie/team/calls.
- On the phone, a call keeps going in the background with a Jevie app from 1 November 2026 on; with an older one, sound and picture pause while Jevie is not in front, and come back with your seat when you open it.
- A call ends as FaceTime's and Meet's do: in a conversation with one person, when either of you hangs up; in a space, when the last person leaves, or two minutes after everyone else left you alone in it. Whoever started a space's call, or an admin, can also press End for everyone beside Leave (asked once first). Closing or hiding the window never ends a call.
- Calls need more of Tailscale than messages do: if your tailnet's policy lets a teammate's Mac reach only the team port (47990), messages arrive but a call's sound and picture cannot, and the call says
Calls can’t get through
. Whoever manages your Tailscale fixes it by also allowing UDP between your Macs in the policy's grant for each other. - Calls go straight from Mac to Mac over Tailscale, never through a server: both Macs need the Tailscale app itself running (a Mac on Jevie's own built-in Tailscale cannot call yet). Each person is connected to each other one, so a call suits a few people, not dozens. The first call asks macOS for the microphone, and a video call for the camera.
- Custom emoji, retention and a push to the phone are not there yet; the audit log shows what the room itself says.
Where it's kept
~/.jevie/self/team.md is the whole setting: on or off, your name, the members, the spaces. The room is ~/.jevie/team/jevie.jsonl; invites are in ~/.jevie/team/invites.json, as hashes. Your notification settings are ~/.jevie/self/team-notify.md (edit it in any editor); what you read, follow, saved, set to remind and wrote for later is ~/.jevie/team/mine.json; webhooks are ~/.jevie/team/hooks.json, their secrets as hashes. JEVIE_TEAM=0 turns it all off.
In Jevie, help team
answers from this page as you type.
Related
Updated 6 November 2026 · Something wrong or missing? Tell us