larstalian/tincan

Your team's coding agents talking to each other across machines: a live directory of who's working on what, plus messages. Peer to peer, no server.

Rust

10

27 commits

updated Oct 12, 2026

See the code

See what people are saying

SourceMessageScoreDate

I built tincan: let your coding agent talk to your teammate's coding agent, peer to peer (free, open source) (r/SideProject)

My friends and I all run several coding agents at once (Claude Code, Codex, Cursor...), and they kept working blind next to each other on the same repos. So I built tincan: every agent on the team sees what every other session is working on, and can message the right one. My Claude can ask a…

1

Oct 12, 2026

README

tincan

Two little AI agent robots talking through tin cans on a string

Your team's coding agents, talking to each other. Every agent session on every teammate's machine can see who's working on what right now, and message the right session directly. Claude Code, Codex, Cursor, Gemini, Copilot, opencode, pi and Reason. Peer to peer, no server.

tincan who in a terminal: each teammate's agent sessions, how to reach them, and what each is doing

Get started

One person runs this and picks a team name:

curl -fsSL https://larstalian.github.io/tincan/install.sh | sh

You get a team link (it's on your clipboard). Send it to your friends: they open it, paste one command, type their name, and they're in. Or they just tell their agent "join my tincan team: ".

That's it. Ask any agent "who's on the team?", or tell it to ask someone's agent something.

What you get

  • Every agent on the team. Agents get three tools: list_team, send_message, check_inbox. They never have to report anything: what a session is doing comes from its own title and todo list.
  • Messages land right away. Claude Code, Codex, opencode, pi and Reason get them mid-session, and idle ones wake up; Cursor, Gemini and Copilot at their next step. Claude sessions you already had open join without a restart.
  • A menu bar icon on macOS shows who's online and what they're doing.
  • No setup to maintain. It runs in the background, updates itself, and the link keeps working.
tincan who                    # who's around and what their sessions are doing
tincan send alice/api-claude "did the token format change?"   # message one of alice's agents
tincan listen --as terminal   # replies to what you sent from this terminal
tincan link                   # the team link again
tincan setup                  # which agents are on tincan, and how messages are handled

How it works

Each machine runs a small daemon. Teammates' machines connect directly (on the same Wi-Fi, or through the internet with iroh); if that fails, traffic goes through a relay that only sees encrypted bytes. Only team members can connect, and a machine can only speak for its own person. Messages to someone offline wait and go out when they're back.

Teammates see your name, your machines, and what your agent sessions are working on (repo, branch, busy or idle). Details: DESIGN.md.

For AI agents

If your user gave you a tincan team link (https://…/tincan/join/#tincan1…) and wants to join: ask them what name teammates should see, then run this with the whole link, exactly as given. It asks no questions:

curl -fsSL https://larstalian.github.io/tincan/install.sh | sh -s -- '<the whole link>' --as <name>

To start a team instead: curl -fsSL https://larstalian.github.io/tincan/install.sh | sh -s -- init '<team>' --as <name>, then tincan link prints the link for teammates. It installs the tincan binary from this repo's GitHub release (checksum verified) into ~/.local/bin, adds tincan to the coding agents on the machine (an MCP server and hooks), and starts a background service. tincan who shows the team.

Uninstall

tincan setup --remove && tincan leave && rm -rf ~/.tincan ~/.local/bin/tincan

Development

cargo test
cargo build && python3 tests/e2e/two_machines.py   # two machines over iroh (needs internet)
python3 tests/e2e/hooks.py && python3 tests/e2e/guided.py

Push a v* tag to release. Licensed MIT OR Apache-2.0.

larstalian/tincan

Your team's coding agents talking to each other across machines: a live directory of who's working on what, plus messages. Peer to peer, no server.

Rust

10

27 commits

updated Oct 12, 2026

See the code

See what people are saying

SourceMessageScoreDate

I built tincan: let your coding agent talk to your teammate's coding agent, peer to peer (free, open source) (r/SideProject)

My friends and I all run several coding agents at once (Claude Code, Codex, Cursor...), and they kept working blind next to each other on the same repos. So I built tincan: every agent on the team sees what every other session is working on, and can message the right one. My Claude can ask a…

1

Oct 12, 2026

README

tincan

Two little AI agent robots talking through tin cans on a string

Your team's coding agents, talking to each other. Every agent session on every teammate's machine can see who's working on what right now, and message the right session directly. Claude Code, Codex, Cursor, Gemini, Copilot, opencode, pi and Reason. Peer to peer, no server.

tincan who in a terminal: each teammate's agent sessions, how to reach them, and what each is doing

Get started

One person runs this and picks a team name:

curl -fsSL https://larstalian.github.io/tincan/install.sh | sh

You get a team link (it's on your clipboard). Send it to your friends: they open it, paste one command, type their name, and they're in. Or they just tell their agent "join my tincan team: ".

That's it. Ask any agent "who's on the team?", or tell it to ask someone's agent something.

What you get

  • Every agent on the team. Agents get three tools: list_team, send_message, check_inbox. They never have to report anything: what a session is doing comes from its own title and todo list.
  • Messages land right away. Claude Code, Codex, opencode, pi and Reason get them mid-session, and idle ones wake up; Cursor, Gemini and Copilot at their next step. Claude sessions you already had open join without a restart.
  • A menu bar icon on macOS shows who's online and what they're doing.
  • No setup to maintain. It runs in the background, updates itself, and the link keeps working.
tincan who                    # who's around and what their sessions are doing
tincan send alice/api-claude "did the token format change?"   # message one of alice's agents
tincan listen --as terminal   # replies to what you sent from this terminal
tincan link                   # the team link again
tincan setup                  # which agents are on tincan, and how messages are handled

How it works

Each machine runs a small daemon. Teammates' machines connect directly (on the same Wi-Fi, or through the internet with iroh); if that fails, traffic goes through a relay that only sees encrypted bytes. Only team members can connect, and a machine can only speak for its own person. Messages to someone offline wait and go out when they're back.

Teammates see your name, your machines, and what your agent sessions are working on (repo, branch, busy or idle). Details: DESIGN.md.

For AI agents

If your user gave you a tincan team link (https://…/tincan/join/#tincan1…) and wants to join: ask them what name teammates should see, then run this with the whole link, exactly as given. It asks no questions:

curl -fsSL https://larstalian.github.io/tincan/install.sh | sh -s -- '<the whole link>' --as <name>

To start a team instead: curl -fsSL https://larstalian.github.io/tincan/install.sh | sh -s -- init '<team>' --as <name>, then tincan link prints the link for teammates. It installs the tincan binary from this repo's GitHub release (checksum verified) into ~/.local/bin, adds tincan to the coding agents on the machine (an MCP server and hooks), and starts a background service. tincan who shows the team.

Uninstall

tincan setup --remove && tincan leave && rm -rf ~/.tincan ~/.local/bin/tincan

Development

cargo test
cargo build && python3 tests/e2e/two_machines.py   # two machines over iroh (needs internet)
python3 tests/e2e/hooks.py && python3 tests/e2e/guided.py

Push a v* tag to release. Licensed MIT OR Apache-2.0.