Run locally when you work in supervised sessions and want direct control of the machine, browser profile and files. Choose a private VM when the agent must remain reachable while your laptop is off. Neither option keeps remote model processing offline. A VM only earns its cost when you also configure persistent storage, secure access, restarts and working model authentication.
BotHearth is a source-installed technical alpha. There is no published prebuilt installer or container image. Start with a supervised trial and check your chosen setup before relying on unattended work.
Here, a VM means an instance you operate for your own work, not a subscription to a BotHearth-hosted service.
Choose around your working hours
“Local” means the agent runs on your own Mac or Linux machine. A VM is a rented virtual machine running elsewhere. These are deployment choices, not different levels of intelligence.
| Your situation | Better starting point | Reason |
|---|---|---|
| You review invoices in an admin portal while supervising | Local | No remote host to administer for that session |
| A website audit must continue after you shut your laptop | Private VM | The execution host can remain running independently |
| You do not want browser profiles stored with a hosting provider | Local | The saved profile stays on hardware you control |
| You need the same separate browser next week | Either | Persistence depends on retaining its storage, not renting a VM |
| You cannot maintain Linux services, credentials and backups | Local trial | Remote setup adds administration, not just a monthly bill |
First establish when a separate browser and computer are worth using. These hosting choices are practical starting points, not performance comparisons.
An always-on spare Mac or Linux computer is a middle option worth considering. It avoids renting a VM, but leaves power, connectivity and maintenance with you.
What runs where—and what leaves it
The minimal architecture is the same in both locations.
Operator access
On-host browser: loopback
Remote browser: SSH tunnel or private HTTPS
Phone: its own private HTTPS connection
|
v
Chosen host: your Mac/Linux machine OR your VM
BotHearth service
+-- Computer: Chromium + native model CLI --> Websites / model provider
+-- Saved profiles, workspace and task records
+-- Optional standalone API connection --> Model provider
Local hosting controls the storage location; it does not make the model local. Model-visible task content can leave either host. Websites, configured connectors and notifications have their own data flows. A VM also introduces the hosting provider: BotHearth’s privacy notice warns that it can access unencrypted disks and snapshots.
Sleep, disconnection and restart are different
Closing the dashboard is not the same as stopping the service. The documented bothearth start --daemon runs in the background; a foreground session needs its terminal left running. Neither is a promise of automatic startup after reboot.
For local work, keep the host awake and connected. Display sleep and system sleep are different; Apple provides a setting to prevent automatic system sleep on power while the display is off. Do not treat closing a laptop as harmless to an active local task. Apple Support
A VM removes that laptop dependency only when the BotHearth service, containers and model runner all execute there. A model CLI still running on your laptop remains a dependency. Remote startup also needs a working service configuration and a vault that can unlock after reboot—not just a successful SSH login.
Restarting a service is not proof that a half-finished website action resumes safely. Docker restart policies apply to containers, not complete task recovery. Docker: container restart policies
Likewise, VM availability is not scheduling. BotHearth’s recurring tasks currently need a standalone provider adapter; its native Codex and Claude Code task connections are not the recurring scheduler. Unattended work additionally needs tested authentication, approvals, alerts and failure handling. See what a recurring review requires.
Keep remote control private
BotHearth’s documented control endpoint is 127.0.0.1:7777. Keep it off the public internet. For a prepared VM, after verifying its SSH host key, this explicitly loopback-bound tunnel runs on your laptop. OpenSSH manual
ssh -N -L 127.0.0.1:7777:127.0.0.1:7777 user@vm.example.com
Replace the account and hostname; local port 7777 must be unused. Open the remote instance’s fresh pairing link through that tunnel. Treat the link as an operator credential.
For phone access with the laptop off, the phone needs its own route. The documented alternative uses Tailscale on both VM and phone, private HTTPS through Serve, restricted device access, and BotHearth pairing. Funnel is public exposure, not the same arrangement. Test actual cellular access rather than assuming laptop access proves it. Tailscale Serve
Retain the right data, not just the machine
Browser profiles live in Docker volumes; saved workspace files and task records live on the host. A retained volume can outlive its container, but browser downloads still in quarantine use temporary storage. Promote required downloads into the workspace before discarding the environment. Docker: volumes
Stop the daemon before backup, and encrypt the backup. Preserve configuration, task data, workspace files, browser volumes, audit log and chain-head file, plus access to the vault’s original key provider. Copying an encrypted vault alone is insufficient; provider CLI authentication and histories also need separate consideration.
BotHearth does not encrypt browser profiles or provide a general automatic transcript/screenshot retention scheduler. Persistent does not mean automatically backed up, automatically erased, or permanently signed in.
Budget beyond the server price
Compare compute + disks + backups + network/IP charges + model access + applicable software/networking fees + tax, then account for maintenance time. Local operation still uses electricity and model access. Docker Desktop has commercial eligibility conditions; check the terms of any networking service separately. Docker Desktop licence
Check the provider’s stopping rules. DigitalOcean continues billing powered-down Droplets until destruction. Deleting a VM is also separate from preserving its data. DigitalOcean: billing questions
No measured minimum VM size or monthly BotHearth workload cost is established here. Test your actual browser workload before committing to a larger machine. Its usage meter is an estimate, not a provider-enforced spending cap.
First-run checklist: prove the basics before leaving it alone
1. Prepare the host
Have Git, Node.js 22.18+, npm, model access and a running supported container runtime. Use Docker Engine on Linux; Docker Desktop, OrbStack or Colima on macOS. Allow disk space for the browser-image build. Headless Linux also needs a functioning secure vault-key arrangement. The documented encrypted user-service route requires systemd 258 or newer and a successful decrypt/start check; older hosts require a separately configured service arrangement.
2. Build from source
Follow the repository quickstart, not an assumed one-click installer. For a fresh local installation, its sequence is below. A fresh VM needs the additional remote-host preparation.
git clone https://github.com/sanjaygbhat/bothearth.git
cd bothearth
npm ci && npm run build
npm link
bothearth init
bothearth image build
bothearth start
3. Connect the model on that host
The computer image includes the official Codex and Claude Code CLIs. Select a computer and sign in through Settings → Model connection; native tasks and their model authentication live inside that computer. Remote login can require the provider’s headless flow; do not paste credentials into a task. OpenAI: Codex authentication
4. Check health and one harmless task
Run bothearth doctor. Ask it to visit your public homepage and contact page, save their titles and URLs, and stop without submitting anything. Open the saved file yourself. A healthy service alone is not a browser-task test.
5. Test the access you will use
Take control and hand back on a harmless page. Reconnect the dashboard; for a VM, test with the laptop off. Verify that an unpaired device cannot operate it.
6. Test recovery before real writes
After the test task finishes, restart the service and reboot the host. Check access, model authentication, saved files and the intended browser profile. Test backup restoration separately; do not replay payments or submissions to test recovery.
Questions before choosing a host
Do I need a GPU?
Not for inference performed by the remote model provider in this architecture. Size the host for the browser and any local computation instead; this is not a benchmarked hardware recommendation.
Will it inherit my everyday browser logins?
No. BotHearth uses its own browser profile rather than your everyday profile by default. Plan to sign into needed sites there and complete any later reauthentication yourself.
Can I run it directly on Windows?
The documented host platforms are macOS and Linux. WSL2 is experimental, not equivalent to a validated native Windows setup.
Start with the smallest useful test
Use the source quickstart for one supervised browser task. Move to the remote setup guide when laptop availability becomes a real constraint. Keep the deployment only after access, saved state and recovery work on your chosen host.