~/Code,
everywhere.
One real ~/Code on every machine and every agent host. You edit on your laptop, an agent edits on a Linux box, and the same project state shows up everywhere. No commits, no copied keys, no setup.
curl -fsSL https://install.bowline.sh | shmacOS app · Linux CLI. Then run bowline setup --root ~/Code.
What is Bowline?
Bowline is a developer workspace sync tool that keeps one real ~/Code directory (source, config, opaque Git state, uncommitted work, and encrypted .env files) in sync across every machine and every coding-agent host, as ordinary local directories rather than a mount, so a project is ready to run wherever you open it.
There is no re-clone and no copied keys. You edit on your laptop, an agent edits on a Linux box, and the same working state shows up everywhere.
It understands code, so node_modules and caches do not cross machines. And if Bowline ever went away, your code is still just files on disk.
From install to synced in three commands
No manifests, no keys to copy between machines. One command per machine, then the code is just there.
Install
Point bowline at the ~/Code you already have. It reads your folder and writes nothing into your projects.
curl -fsSL https://install.bowline.sh | shThen run bowline setup --root ~/Code.
Add a machine
Approve the device once. Your whole ~/Code namespace appears on the new machine before every byte has landed.
bowline connect linux-01Work
Source, config, and .env are already there. Run the project, or hand it to an agent. It just works.
cd ~/Code/acme/web && pnpm devWhat bowline does for your code
Real files, real tools, no ceremony. Here is what changes after one install.
Real directories, not a mount
~/Code is an ordinary folder on local disk. Your editor, shell, Git, and package managers treat it like any other directory, because it is one. No FUSE mount, no symlink tricks, no remote filesystem to babysit.
acme/ web/ next.js · synced api/ fastapi · synced experiments/ bowline/ rust · synced
Your env follows the project
.env, .env.local, and .env.* travel with the project, encrypted end-to-end. Open it on a second machine or hand it to an agent, and pnpm dev just runs. No bowline shell, no re-pasting API keys.
OPENAI_API_KEY=sk-live-… STRIPE_SECRET=sk-live-… DATABASE_URL=postgres://…
Agents edit your live project
An agent edits ~/Code directly, by default. Every change lands in your real folder and syncs to all your machines instantly, while the agent moves on to the next file. Want a gate for risky work? Run the agent in an isolated overlay and review before it applies.
Knows what's stale before work starts
bowline status flags stale bases, missing env, and degraded sync before an agent spends an hour working on the wrong tree.
Built so you can hand an agent the keys
bowline carries source, env, and secrets between your machines and agents. Here is what keeps that safe.
Nothing an agent does is silent or lost.
Agents edit your live ~/Code by default, so you don't have to babysit them. Every change is snapshotted and synced to your machines, and offline divergence becomes a conflict record instead of an overwrite. See it, resume it, or roll it back, and gate the risky runs behind review when you want to.
Encrypted in transit and at rest
Workspace files, .env files, and secrets sync end-to-end to approved devices and agent hosts. The relay carries ciphertext; the hosted service cannot read secret values.
Device trust, not blanket access
Each machine and agent host is approved explicitly, from a session you already trust, and can be revoked at any time.
Recovery keys you hold
Generate and verify a recovery key so you never lose access to your own workspace, even if you lose a machine.
Stop syncing your code by hand.
curl -fsSL https://install.bowline.sh | shWhat bowline is not
bowline has a narrow job and stays out of the rest of your workflow. That is the point.
Git stays your tool for commits, branches, and remotes. bowline syncs the working state around it, including uncommitted edits, untracked files, and local-only notes.
bowline understands code. node_modules doesn't cross machines, dependencies regenerate locally, generated folders follow policy. A photo-sync app doesn't know what a lockfile is.
Your laptop is first-class. bowline syncs real local directories instead of moving you into a remote VM you have to live inside.
Pricing
Free during betaEverything's free while we're in beta. These are the plans we'll launch with. We won't bill you until then, and we'll give you plenty of notice first.
one developer, always
For one developer across all their machines.
- Unlimited projects in ~/Code
- Up to 3 trusted devices
- Encrypted env and secrets sync
- Community support
in beta · paid at launch
For developers running agents across machines.
- Everything in Solo
- Unlimited devices and agent hosts
- Agent workspace handoff with work review
- Priority sync
- Email support
in beta · custom at launch
For teams sharing a workspace namespace.
- Everything in Pro
- Shared workspace policy
- Audit logs (planned)
- SSO and device governance (planned)
- Dedicated support
Common questions
Short answers to the things developers ask first.
Is my code encrypted?
Yes. Workspace files, .env files, and secrets sync end-to-end to approved devices and agent hosts. The hosted service carries ciphertext and cannot read secret values.
What actually syncs?
Source, config, opaque Git state, .env files, secrets, and selected non-Git working files. node_modules, caches, and generated folders do not cross machines; they regenerate locally.
Does bowline change my Git workflow?
No. Git stays your tool for commits, branches, and remotes. bowline syncs the working state around it, including uncommitted and untracked work.
What if two machines edit the same file offline?
bowline records an explicit conflict and keeps both versions. There is no silent last-writer-wins. You resolve it with a clear review step.
Do agents run against my live folder?
By default, yes, and that is the point. An agent edits your live ~/Code directly and the changes sync to every machine, so you don't have to review and apply every run. When you want a gate for risky work, run the agent in an isolated overlay and use bowline work review and bowline work accept before changes land.
Which platforms are supported?
macOS today, with a native menu bar app for ambient status, plus Linux hosts for agents and build machines.
How do I sync my code and .env across machines without git commits?
Install bowline and log in on each machine. Your ~/Code stays in sync as ordinary local files: source, config, opaque Git state, uncommitted edits, and encrypted .env files. You never commit half-done work or copy keys just to move work between machines.
How do I run a coding agent on a remote server with my local env?
Trust the server as an agent host once. Your real ~/Code and encrypted .env files rematerialize there, so the agent can run the project immediately and its edits sync back to every machine. For risky work, run it in an isolated overlay and use bowline work review and bowline work accept before changes land.
Is Bowline like Dropbox or Syncthing for code?
No. Those tools sync bytes without understanding code. bowline knows node_modules and caches should not cross machines, respects lockfiles, and keeps generated folders on policy. Offline divergence becomes a recorded conflict with both versions kept, never a silent last-writer-wins.
Does Bowline replace Git?
No. Git stays your tool for commits, branches, and remotes. bowline syncs the working state around it, including uncommitted and untracked work, so you stop using commits just to move files between machines.
What does not sync?
node_modules, build caches, and generated folders do not cross machines; they regenerate locally. Everything you actually author or rely on for the project does cross machines: source, config, opaque Git state, uncommitted edits, selected non-Git working files, and encrypted .env files.
How is Bowline different from Codespaces or Gitpod?
Those move you into a remote VM you have to live inside. bowline keeps real local directories on the machines you already use, so your laptop stays first-class. If bowline went away, your code is still just files on disk, with no mount to unwind.
Your ~/Code, on every machine and every agent.
Install bowline and your projects follow you. It just works.
curl -fsSL https://install.bowline.sh | shmacOS app · Linux CLI. Then run bowline setup --root ~/Code.