
Go Harnessless
https://github.com/browser-use/go-harnessless- Category
- Developer Tools
- Rank
- No. 1656Tools index
- Pricing
- Open Source
- Type
- TOOL
- Builder
- browser-use
- GitHub
- 11 stars
- Date
About
Go rewrite of harnessless: daemon-based Chrome DevTools Protocol bridge for concurrent browser automation.
What it does
Go Harnessless keeps one connection to an already running Chrome session, then accepts short-lived automation requests from shell commands or Go programs. It can navigate, click coordinates, type, press keys, capture screenshots, inspect tabs, evaluate JavaScript, collect browser events, and forward raw DevTools commands.
Why it's ranked here
The design makes a strong case for automation that must preserve browser state while serving concurrent callers. Per-tab locks allow parallel reads, a fixed worker pool limits pressure on Chrome, and request-specific response channels avoid global response routing. The focused command set remains practical for scripts and language-model tool calls.
What's good
The daemon retains the active Chrome session and cookies between client invocations. Read operations can run concurrently across tabs, while mutations receive exclusive tab access. Each DevTools request has a 30-second timeout. Users get both a shell-friendly client and typed Go helpers, plus raw protocol access when the helpers fall short.
Tradeoffs
Setup requires Chrome 144 or newer, remote debugging enabled, and Go for building from source. The transport uses a fixed Unix domain socket, which narrows the natural deployment environment. Browser interaction centers on coordinates, focused-element text input, JavaScript, and raw protocol commands. The documented high-level surface does not include selector-based element targeting.
How to use it well
Use it for local agents, shell scripts, or Go services that repeatedly control an existing Chrome profile and benefit from parallel work across tabs. Keep the daemon alive, use helpers for common actions, and drop to raw DevTools commands for gaps. It does not replace browser provisioning or a higher-level element-finding framework.
Technical notes+
go.mod declares module github.com/browser-use/go-harnessless, Go 1.23.4, and github.com/gorilla/websocket as its sole listed dependency. daemon.go owns the persistent WebSocket, sync.Map of pending responses, four-worker workerCh, 500-event buffer, 30-second CDP timeout, stale-session retry, and newline-delimited JSON server on /tmp/harnessless.sock. tab_manager.go implements manager-level and per-tab sync.RWMutex locking. client.go opens a fresh Unix connection for every Send and applies a 35-second connection deadline. helpers.go supplies higher-level actions, while cmd/client/main.go and cmd/daemon/main.go build the two command interfaces.
Observed
- Primary language
- Go
- Packaging
- Go module with separate daemon and client binaries built from source
- Interfaces
- Command-line client, Go library, Unix-socket JSON protocol, and raw Chrome DevTools Protocol passthrough
- Browser requirement
- Chrome 144 or newer with remote debugging enabled
- Go declaration
- go.mod declares Go 1.23.4
- Runtime dependency
- go.mod lists github.com/gorilla/websocket
- Transport
- Local Unix domain socket at /tmp/harnessless.sock
- Repository structure
- The supplied repository tree shows no test directory or test files
Read from README.md, go.mod, types.go, client.go, daemon.go, helpers.go, tab_manager.go, cmd/client/main.go, cmd/daemon/main.go.
What it can do
Bridge Chrome DevTools Protocol communications
DevTools Protocol commands and events → Processed protocol messages between client and browser
Enable concurrent browser automation
Multiple automation scripts or commands → Parallel browser operations execution
Run as background daemon service
System startup configuration → Persistent background process for browser control
Manage browser instances without UI harnesses
Browser launch parameters → Headless or lightweight browser sessions
Handle multiple browser connections simultaneously
Connection requests from automation clients → Established browser communication channels
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.