every machine · every agent

~/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.

It just works.
brew install bowline

macOS · Homebrew. Then run bowline login.

codex agent· editing ~/Code/acme/webTypeScriptthinking…
Reading the panel modules and their tests so the tabbed layout wires in cleanly and stays green.
Read 4 files
Adding the view layer first — a segmented tab bar and a click-to-copy affordance — then I'll wire it in.
Wrote 90 lines · SegmentedTabBar.tsx
Now the copy affordance, modeled on a silent copy overlay but kept in pure components.
Wrote 55 lines · CopyableText.tsx
Wiring the tabs into the status panel and persisting the active tab in the store.
Edited StatusPanel.tsx
Edited panelStore.ts
Adding a regression test for the tab refactor before I move on.
Wrote 31 lines · panel.test.tsx
Running the suite to catch anything the refactor moved.
Ran pnpm test · 37 passed
Green — and it's already on every de
~/Code/acme/webchanges ready
live project · +212 12
web/Views/SegmentedTabBar.tsxnew+900
web/Views/CopyableText.tsxnew+550
web/panel/StatusPanel.tsx+249
web/store/panelStore.ts+123
web/tests/panel.test.tsxnew+310
MacBook Pro✓ synced
web/Views/SegmentedTabBar.tsxnew+900
web/Views/CopyableText.tsxnew+550
web/panel/StatusPanel.tsx+249
web/store/panelStore.ts+123
web/tests/panel.test.tsxnew+310
linux-builder-01✓ synced
web/Views/SegmentedTabBar.tsxnew+900
web/Views/CopyableText.tsxnew+550
web/panel/StatusPanel.tsx+249
web/store/panelStore.ts+123
web/tests/panel.test.tsxnew+310
Mac Studio✓ synced
web/Views/SegmentedTabBar.tsxnew+900
web/Views/CopyableText.tsxnew+550
web/panel/StatusPanel.tsx+249
web/store/panelStore.ts+123
web/tests/panel.test.tsxnew+310
Real ~/Code, not a mount
Env follows the project
Agents edit live, synced

From install to synced in three commands

No manifests, no hydrate command, no keys to copy between machines.

01

Install

Point bowline at the ~/Code you already have. It reads your folder and writes nothing into your projects.

brew install bowline

Then run bowline login.

02

Add a machine

Approve the device once. Your whole ~/Code namespace appears on the new machine before every byte has landed.

bowline connect linux-01
linux-01 approved · ~/Code synced
03

Work

Source, config, and .env are already there. Run the project, or hand it to an agent. It just works.

cd ~/Code/acme/web && pnpm dev
dev server ready on :3000

What 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.

~/Code
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. 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.

acme/web/.env
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.

agentfix auth callback race
src/auth.ts+18 -4
src/session.ts+6 -1
applied to ~/Codesynced to 3 devices

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.

$ bowline status
acme/webenv synced
acme/api3 commits behind
agent-authbase stale

Stop syncing your code by hand.

brew install bowline
open demo →

What bowline is not

bowline has a narrow job and stays out of the rest of your workflow. That is the point.

Not a Git wrapper

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.

Not Dropbox for code

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.

Not a cloud devbox

Your laptop is first-class. bowline syncs real local directories instead of moving you into a remote VM you have to live inside.

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.

Recoverable

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, and secrets are stored as encrypted state and rematerialize as normal files only on devices you trust.

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.

Pricing

mock pricing

Placeholder tiers while we finalize pricing. Solo stays free for one developer across all their machines.

Solo
$0

For one developer across all their machines.

  • Unlimited projects in ~/Code
  • Up to 3 trusted devices
  • Env and secrets sync
  • Community support
Propopular
$12/ month

For developers running agents across machines.

  • Everything in Solo
  • Unlimited devices and agent hosts
  • Agent leases and review
  • Priority sync
  • Email support
Team
Custom

For teams sharing a workspace namespace.

  • Everything in Pro
  • Shared workspace policy
  • Audit logs
  • SSO and device governance
  • Dedicated support

Common questions

Short answers to the things developers ask first.

Is my code encrypted?

Yes. Workspace files, env, and secrets are encrypted in transit and at rest, and only rematerialize as normal files on devices you have approved.

What actually syncs?

Source, config, opaque Git state, .env files, 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 review and bowline 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.

Your ~/Code, on every machine and every agent.

Install bowline and your projects follow you. It just works.

brew install bowline

macOS · Homebrew. Then run bowline login.

open demo →