Documentation / Collaboration and integrations
Live Share
Pair-program on the same project with end-to-end encryption, single-use invites and per-guest permissions. Your secrets are never shared.
Live Share lets another person edit the project you have open together with you: both of you type at the same time, see each other's cursor, chat and can follow a debugging session together. No cloud servers are needed: the connection goes straight between the two machines.
Open it with the Live Share: pair programming command (Tools group, from Find action, Ctrl+Shift+A). It opens in a tab.
Start a session
- Press Share this project.
- Type Your name.
- In Share on, choose where to listen: Local network (with your address), Another address (VPN)… or This machine only (SSH tunnel). Yuli listens on that interface only, never on all of them.
- Choose the options: Approve each guest before they join, Guests can edit and Share my debugging session.
- Press Start sharing and send the invite to your teammate over a trusted channel.
- Press Join a session.
- Paste the invite the host sent you.
- Check with the host that the fingerprint Yuli shows matches theirs.
- Press Join. If the host approves each guest, wait for their answer (up to 120 seconds).
The invite looks like this:
yuli-live://host:port/token#sha256It carries the address, a secret token and the SHA-256 fingerprint of the session certificate.
Security
| Protection | Details |
|---|---|
| Encryption | TLS 1.3 with a certificate created for each session. Its SHA-256 fingerprint travels in the invite and is pinned: no certificate authority is needed. |
| Token | 128 bits from the system random generator, single use, compared in constant time. |
| Expiry | The invite expires after 30 minutes by default. |
| Failed attempts | Up to 5 per address per minute. |
| Participants | 12 at most per session. |
| Document size | 4 MB at most per shared file. |
Approving a guest
If you turned approval on, Yuli tells you: "{name} wants to join". You choose:
| Option | What happens |
|---|---|
| Accept (read-only) | They join and see the project, without editing. |
| Accept with editing | They join and can edit. |
| Reject | They don't join. |
Per-guest permissions
During the session, in the participant list, you change each guest's permissions:
| Permission | Default |
|---|---|
| Edit | Depends on how you accepted them. |
| Terminal | Off. |
| Remove | Takes the guest out of the session. |
The Terminal permission gives the guest a real terminal on your machine, with your account. Turn it on only for people you fully trust, and turn it off as soon as they no longer need it.
Joins, removals and permission changes are written to the audit log.
What is shared
- Simultaneous editing of the project's files.
- Each participant's cursor, and Follow another participant.
- A session chat.
- Your debugging session, if you share it: the line where it is paused, the stack and the variables. Guests can request steps.
What is never shared
Secrets, the credential vault, the .git/ folder and anything outside the project (symbolic links included). Files ignored by .gitignore only if the host shares them. A file with a detected credential reaches guests redacted and read-only.