The best remote pair programming
app on macOS and Windows
Built from the ground up to deliver razor sharp screen sharing, crisp audio, and seamless remote control, so you can get into the flow with your teammates and do real work.
PaidUsersList.tsx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
const fetchUsersInPaidTeams = async (): Promise<User[]> => {
const response = await fetch(`${API_BASE_URL}/v1/users`)
if (!response.ok) throw new Error('Failed to fetch users')
const users: User[] = await response.json()
return users.filter(user => user.team.isPaid)
}
export const PaidTeamUsers = () => {
const [users, setUsers] = useState<User[] | null>(null)
const [error, setError] = useState<string | null>(null)
useEffect(() => {
fetchUsersInPaidTeams()
.then(data => setUsers(data))
.catch(err => setError(err.message))
}, [])
if (!users) return <Loading />
if (error) return <Error />
return <UserTable users={users} />
}
Paul
Sarah
Mike
Trusted by thousands of teams
Built for Pairing
Engineers deserve sharp tools
Generic screen sharing tools just won't cut it.
Tuple is purpose-built
for an exceptional pairing experience.
Ridiculously crisp audio and video
Tuple streams in super high resolution (up to 5K) so you can read your pair's tiny programming font.
End-to-end encryption
All audio, video, and screen share data is end-to-end encrypted, and is never sent to Tuple's servers. We take your privacy extremely seriously.
Seamless collaboration
Snappy remote control combined with clear audio and video make you feel like you're sitting right next to your pair.
const fetchUsersInPaidTeams = async (): Promise<User[]> => {
const response = await fetch(`${API_BASE_URL}/v1/users`)
if (!response.ok) throw new Error('Failed to fetch users')
const users: User[] = await response.json()
return users.filter(user => user.team.isPaid)
}
export const PaidTeamUsers = () => {
const [users, setUsers] = useState<User[] | null>(null)
const [error, setError] = useState<string | null>(null)
useEffect(() => {
fetchUsersInPaidTeams()
.then(data => setUsers(data))
.catch(err => setError(err.message))
}, [])
if (!users) return <Loading />
if (error) return <Error />
return <UserTable users={users} />
}
One click to swap who’s sharing
It just takes one click to switch who's sharing when you're on a call. Easily go back and forth with your pair on a tough problem.
Testimonials
Don't take our word for it
Here are some of the nice things people have said about Tuple.
Tuple has become our default tool for remote pairing at Shopify. The teams love it.
Farhan Thawar
VP of Engineering, Shopify
It's the best tool for remote pair programming. Latency is important, keyboard binding all just works. It feels like you're working on a shared computer.
Andrés Taylor
Developer, PlanetScale
So impressed with Tuple. It makes pair programming remotely with co-workers and friends fun again.
Michael Feldstein
Staff Engineer, Figma
Tuple allows me to thrive as an independent developer, easily chatting with freelance clients, mentoring others, and collaborating on open-source projects.
Mikaela Caron
Independent iOS Engineer
Tuple spread like wildfire throughout the entire Clerk team, and quickly became an integral part of our internal communications.
Braden Sidoti
Co-founder & CTO, Clerk
Small footprint
Respectful of system resources and screen real estate
Native where it counts
The core of Tuple is a natively compiled, cross-platform C++ engine. It's not just another Electron app.
Obsessed with performance
We've been hacking on Tuple for years to make it as fast and efficient as possible. We're stingy with your CPU cycles.
Runs in your menu bar
Do you hate a cluttered dock or task bar? Well, us too. Tuple stays out of your way until you need it.
Designed for privacy
Fearless screen sharing with App Veil
Your teammates only see what you want them to see, nothing more.
Fearless screen sharing with App Veil
Hide sensitive apps and notifications, and share your desktop with confidence.
Workflow
Built for developers, by developers
We're programmers too. We built Tuple to fit the way engineers work.
triggers
triggers
pause-spotify
call-initiated
call-ended
add-git-coauthor
participant-joined
participant-left
Automate your workflow with Triggers
Tools for programmers should be programmable.
Triggers let you hook into Tuple's call
events and run arbitrary code.
Copy call link
Add a participant
Open Tuple popover
Toggle microphone
Copy call link
Add a participant
Open Tuple popover
Toggle microphone
Keyboard shortcuts for everything
Keep your hands on the keyboard and stay in flow with fully customizable shortcuts.
For macOS and Windows
It doesn't matter whether your team is using macOS or Windows — Tuple works great on both.
Effective and fun
Liven up your pairing sessions
Build cool stuff with your teammates – and have a good time in the process.
Emoji reactions
Show the rest of team how you're feeling with on-screen emoji reactions.
Screen annotations
Draw or type on a shared screen to draw attention to something or emphasize a point. Or use Tuple as a shared virtual whiteboard.
Animations
Finally figure out that gnarly race condition? Drop a giant "ship it" animation into the pairing session.
❤️
🤯
🔥
👍
👏
Pete
Let's Go
Ready to get started?
Give Tuple a spin with a 14-day free trial.