Remote Coding

Code from anywhere using Tailscale for secure remote access.

The Problem

By default, Broski connects over your local WiFi network. This works great at home or office, but what happens when you:

  • • Leave the house for coffee and want to keep coding?
  • • Travel and need to check on a long-running task?
  • • Work from multiple locations throughout the day?
  • • Want to approve a command while away from your system?

Without remote access, you lose connection as soon as you leave your network.

The Solution: Tailscale

Tailscale creates a secure, encrypted network between your devices that works from anywhere in the world. It's:

  • Free for personal use (up to 100 devices)
  • Easy to set up (no network configuration needed)
  • Secure (WireGuard encrypted)
  • Fast (peer-to-peer when possible)
How it works
Tailscale assigns each device a stable IP address (100.x.x.x) that works from anywhere. Traffic is encrypted end-to-end using WireGuard.

Quick Setup

1
Install Tailscale on your system

Use the bridge's built-in wizard:

bash
broski setup-tailscale

Or install manually:

bash
# macOS:
brew install --cask tailscale

# Windows:
# Download from https://tailscale.com/download/windows

# Linux:
# curl -fsSL https://tailscale.com/install.sh | sh
2
Sign in on your system

Open Tailscale and sign in with Google, GitHub, or Microsoft.

3
Install Tailscale on your phone
4
Sign in on your phone

Use the same account you used on your system. Both devices should now be on your "tailnet".

5
Start the bridge
bash
broski

The QR code now includes your Tailscale IP. Scan it with Broski.

You can now code from anywhere!

As long as both devices have Tailscale connected, Broski will work from any network.

Funnel Option (No VPN on Phone)

Don't want to install Tailscale on your phone? Use Tailscale Funnel to expose your bridge via a public HTTPS URL.

Security note
Funnel creates a public URL. Your bridge is still protected by the auth token, but you're exposing it to the internet. Use for convenience, not for sensitive work.

Enable Funnel

1
Enable Funnel in Tailscale Admin
  1. Go to admin.tailscale.com
  2. Navigate to DNS → Enable HTTPS
  3. Then go to Access controls and enable Funnel
  4. Wait a few minutes for changes to propagate
2
Start bridge with Funnel
bash
broski --funnel
3
Scan the QR code

It now contains a public HTTPS URL (e.g., https://your-mac.tailnet-name.ts.net)

Funnel vs Tailscale VPN

FeatureTailscale VPNFunnel
Phone app requiredYes (Tailscale)No
EncryptionWireGuard (E2E)TLS (to Tailscale edge)
URL typews://100.x.x.x:portwss://name.ts.net
LatencyLower (direct)Higher (via Tailscale)
Public accessNoYes
SetupInstall on bothEnable in admin

Latency Expectations

Different connection methods have different performance characteristics:

Connection TypeTypical LatencyExperience
Local WiFi~10msInstant, like being at your desk
Tailscale (same city)~30-50msSmooth, barely noticeable
Tailscale (cross-country)~50-100msGood, slight delay on typing
Tailscale Funnel~100-200msUsable, some buffering on streams
Tailscale (international)~150-300msWorks, noticeable delay
The app adapts
Broski automatically adjusts streaming behavior based on your connection quality. Higher latency means more batching for smoother experience.

Workflow Tips

Keep your system awake

Your system needs to stay awake for the bridge to work. Adjust power/sleep settings or use:

bash
# macOS: Keep system awake while bridge runs
caffeinate -i broski

# Linux:
# systemd-inhibit --what=idle broski

# Windows: Use the background service to keep it running
# broski install
Run bridge as background service

For always-on access, run the bridge as a LaunchAgent:

See Background Service for setup instructions.

Check connection before important tasks

Look at the connection indicator in the app. Green = good, Yellow = okay but slow, Red = disconnected.

Use local when possible

When you're back on the same network as your system, Broski will automatically use the faster local connection.

Queue messages during poor connectivity

If connection drops briefly, your messages are queued and sent when reconnected. Don't keep retapping send.

Common Issues

Can't connect via Tailscale
  • • Check Tailscale is connected on both devices
  • • Verify both are on the same account (same tailnet)
  • • Try tailscale ping <mac-ip> from phone
Funnel not working
  • • Ensure Funnel is enabled in Tailscale admin console
  • • Wait 5-10 minutes after enabling for propagation
  • • Check tailscale funnel status
High latency
  • • Check if traffic is being relayed (see Tailscale status)
  • • Try switching networks (e.g., WiFi → cellular)
  • • If using Funnel, consider installing Tailscale on phone instead
Connection drops when switching networks

This is normal. The app will auto-reconnect when your phone has stable network again. Tailscale handles IP changes automatically.

Summary

If you want...Use this
Best performance + securityTailscale on both devices
No app on phone + convenienceTailscale Funnel
Best latencyLocal WiFi (same network)
Work + personal device separationFunnel (work phone doesn't need Tailscale)