Tuple: the Code With Me alternative built for remote pair programming
Just because JetBrains is sunsetting Code With Me doesn't mean you have to stop pairing.

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
Why developers are switching to Tuple
JetBrains sunset Code With Me in March 2026; final shut down Q1 2027. Need an alternative? Tuple is purpose built for remote pair programming.
TESTIMONIALS
Don't take our word for it
Here are some of the nice things people have said about Tuple.
Really impressed by Tuple after switching from Code With Me. Getting on calls is effortless, the video quality is excellent, and it's so easy to annotate and control my partner's machine.
Justin McManus
Tech Lead, Frieda Health
It’s faster, easier and more seamless than anything we’ve tried.
Ian Lesperance
Senior Principal Software Engineer, Vimeo
So impressed with Tuple. It makes pair programming remotely fun again.
Michael Feldstein
Staff Engineer, Figma
It's the best tool for remote pair programming. It feels like you're working on a shared computer.
Andrés Taylor
Developer, PlanetScale
We resolve issues way faster. Using Tuple makes me feel like I'm sitting in the same room as my team.
David Pulay
CTO, Suppli
Tuple is a game changer. It makes it feel like I'm in an office with my peers.
Sébastien Marchand
Software Engineer, The Browser Company
BUILT WITH LOVE
Developers deserve sharp tools
Break out of the IDE and pair program across your entire operating system.
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.
Let's Go
Happy pairing
Former CWM customers use code CWM30 and get your first month free after your 14-day trial.


