BridgeStick

Docs

Install the BridgeStick agent

The agent links one of your private networks to BridgeStick. Install it on a machine inside that network, join it with an auth key, and allow what it may reach. It dials out over HTTPS: nothing is opened in your firewall.

Before you start

  • A machine inside the network — Linux (x86_64 or ARM64), macOS on Apple silicon or Windows (x64) — that can reach the systems you want to sync.
  • Outbound HTTPS (port 443) from that machine to bridgestick.com (the downloads) and api.bridgestick.com (where agents dial). Behind a proxy, set HTTPS_PROXY.
  • Administrator rights to install the service (sudo on Linux and macOS, an administrator PowerShell on Windows).
  • A BridgeStick account: start free or sign in.

1. Create an auth key

In BridgeStick, open Links, create a link for the network (or open it), and add an auth key. Choose whether it is one-off or reusable, when it expires, and whether agents that join with it are pre-approved or wait for your approval. The key (bslk_…) is shown once, with the install command for each system already filled in: copy it now.

2. Install and join

Run one of these on the machine. Replace bslk_… with your auth key. --server defaults to https://api.bridgestick.com; the commands BridgeStick shows you include it.

Linux and macOS

Downloads the agent, verifies it, installs it as a service and joins it.

Linux and macOS
curl -fsSL https://assets.bridgestick.com/downloads/install.sh | sh -s -- --auth-key bslk_…

Debian and Ubuntu (apt)

Adds BridgeStick's signed apt repository, installs the package and joins it.

Debian and Ubuntu (apt)
curl -fsSL https://assets.bridgestick.com/downloads/apt/bridgestick.gpg | sudo tee /usr/share/keyrings/bridgestick.gpg >/dev/nullecho 'deb [signed-by=/usr/share/keyrings/bridgestick.gpg] https://assets.bridgestick.com/downloads/apt stable main' | sudo tee /etc/apt/sources.list.d/bridgestick.listsudo apt-get update && sudo apt-get install -y bridgesticksudo bridgestick up --auth-key bslk_…

Windows

In PowerShell, as an administrator.

Windows
$env:BRIDGESTICK_AUTH_KEY='bslk_…'; iwr https://assets.bridgestick.com/downloads/install.ps1 -UseBasicParsing | iex

Already installed

On a machine where the bridgestick command is installed.

Already installed
bridgestick up --auth-key bslk_… --server https://api.bridgestick.com

If bridgestick status says the agent is not running, start its service with sudo bridgestick install-service (an administrator prompt on Windows).

3. Approve the agent

An agent that joined with a key that is not pre-approved shows waiting for approval, in its status and on the link's page. Approve it there; from then on it takes calls. A pre-approved key skips this step.

4. Allow what it may reach

The agent starts with an empty allow list: it reaches nothing until you add rules. Before a connector opens, every host and port it will connect to is resolved and checked against the list, and every file against its folders; anything else is refused. Only the agent enforces the list, so a compromised cloud cannot use it to reach what you did not allow.

Allow-list rules
RuleWhat it lets through
internetAny public address, on any port
10.0.0.0/8A network, on any port
10.0.0.0/8:5432A network, on one port
10.1.2.3:1433-1434An address, on a range of ports
sap.corp.local:44300A host name, and every address it has
*.corp.local:*Host names by pattern, on any port
[fd00::5]:5432An IPv6 address, on one port
path:/srv/exportsFiles under a folder (SQLite), by absolute path

Examples

Examples
sudo bridgestick allow add sap.corp.local:44300sudo bridgestick allow add 10.20.0.0/16:1433sudo bridgestick allow add path:/srv/exportssudo bridgestick allow list
  • A host name is judged by every address it resolves to: a name that leads somewhere else is judged by where it leads. A host-name rule matches by the name itself.
  • internet admits public addresses only — never a private, loopback or link-local one.
  • Give every agent of a link the same rules: each one enforces its own list.
  • When the agent runs as a service, run these commands with sudo (an administrator prompt on Windows): its folder belongs to the service.

5. Use the link

In BridgeStick, set a source's or a destination's Network to the link. Its hosts may be private (10.0.0.5, sap.corp.local), and its files are on the agent's machine. A connection with a private end runs in the link's agents: the rows never cross BridgeStick.

Commands

The bridgestick command line
CommandWhat it does
bridgestick up --auth-key bslk_… [--server URL] [--hostname NAME] [--force]Join the link (once) and keep it up. --server names BridgeStick's address, --hostname the name the agent shows, --force leaves the current link first.
bridgestick downTake the link down. The daemon stays; bridgestick up brings the link back.
bridgestick status [--json]What the agent is doing: its link, state, server, allow list and version — and whether a newer release is out. --json for scripts.
bridgestick allow list | add RULE | remove RULEList, add or remove allow-list rules. Nothing is allowed by default.
bridgestick logoutLeave the link: forget the agent's key and its join.
bridgestick daemonRun the daemon (bridgestickd) in the foreground, to watch it work.
bridgestick install-service [--user NAME]Run the daemon at boot: systemd, launchd or a Windows scheduled task. --user sets the Linux account (default bridgestick).
bridgestick uninstall-serviceStop running the daemon at boot.
bridgestick update [--check] [--version X.Y.Z]Install the latest release (or --version that one) the way the agent was installed — apt, or the installer, checked against the release's signature — keeping its link and allow list. --check only says whether one is out. With sudo (an administrator prompt on Windows) when it is installed for the machine.
bridgestick version | -v | --versionThe agent's version.
bridgestick --home FOLDER …Use another folder for the agent's state (any command).

Files and service

The agent keeps its configuration, its key (readable by its owner only) and its status in one folder. BRIDGESTICK_AGENT_HOME overrides it.

Where the agent keeps its state
SystemFolder
Linux, as root (the service)/var/lib/bridgestick
Linux, as a user~/.local/state/bridgestick
macOS, as root (the service)/Library/Application Support/BridgeStick
macOS, as a user~/Library/Application Support/BridgeStick
WindowsC:\ProgramData\BridgeStick
  • Linux: a systemd unit, bridgestickd.service, run as the unprivileged user bridgestick, restarted always and hardened (no new privileges, a read-only system, its folder writable). Logs: journalctl -u bridgestickd.
  • macOS: a launch daemon, com.bridgestick.agent, kept alive. Logs: /Library/Logs/bridgestickd.log.
  • Windows: a scheduled task, BridgeStick Agent, run at start-up as SYSTEM.

High availability

  • Install the agent on two or more machines of the network and join each to the same link (a reusable key, or one key each).
  • The agent connected longest is the primary. When it disconnects or misses three heartbeats (15 seconds apart), the next one takes over and new calls go there.
  • A call in flight on a lost agent fails as a transient error: a read is tried again, and a sync continues from its last checkpoint on its next run.
  • Agents reconnect by themselves, waiting 1 second and doubling up to 60, with jitter, so agents cut off together do not come back together.
  • Give every agent the same allow list: whichever is primary must reach every end.

Revoke or remove

  • Revoke an agent on the link's page: its session closes at once, and it stays out.
  • Revoke an auth key to stop new agents joining with it; agents that already joined stay.
  • On the machine, bridgestick logout forgets the agent's key and its join, and bridgestick uninstall-service stops the daemon.
  • Ephemeral agents are removed when they go offline.

Troubleshooting

What the agent says, and what to do
You seeWhat to do
… cannot be reached: …Allow outbound HTTPS (443) from the machine to api.bridgestick.com. Behind a proxy, set HTTPS_PROXY for the command and for the service.
… refused to join: …The auth key is spent, expired or revoked: create a new one on the link's page.
This agent is on the link … alreadyRun bridgestick logout first, or bridgestick up --auth-key bslk_… --force.
State: waiting for approvalApprove the agent on the link's page, or join with a pre-approved key.
State: refusedBridgeStick revoked or removed this agent: join again with a new key and --force.
State: reconnectingThe channel dropped and the agent is retrying by itself; the Error line says why. Check the network or the proxy if it lasts.
State: not runningThe daemon is not running: sudo bridgestick install-service, or bridgestick daemon to run it in the foreground.
… is not in this agent's allow listAdd a rule for that host and port — bridgestick allow add host:port — on every agent of the link.
… is not under a folder of this agent's allow listAdd the folder: bridgestick allow add path:/folder.
… the host name does not resolveFix name resolution on the agent's machine, or name the host by its address.
… (run it as the agent's user, or with sudo)The agent's folder belongs to the service: run the command with sudo.
The link shows offline in BridgeStickNo agent is connected: run bridgestick status on each machine. Runs are refused and scheduled turns missed until one connects; they do not count as failures of its sources.
Anything elseWrite to team@davait.com with what bridgestick status prints and the agent's last log lines.

Bridge your data with nothing bent on the way.

Create your space, connect a source and run your first sync — free during early access. When your systems are private, an agent is one command away.