# LocoAgent is a fork of the Claude Code CLI that still installs as claude-clean

> LocoAgent takes the Claude Code source tree, keeps the agent loop, the tools and the terminal UI, and points them at a real Chrome driven over the DevTools protocol so it can like, follow and reply as you. That reuse is visible everywhere: the binary is still named claude-clean, a run-claude.sh sits at the root, and several Anthropic packages are vendored as local file stubs rather than fetched from a registry. The configuration has two surfaces, and the older one quietly wins.

**LocoreMind/locoagent** — AI-powered social media agent with real browser automation

- Repository: https://github.com/LocoreMind/locoagent
- Website: https://locoremind.com/blog/locoagent
- Stars: 1,065 · Forks: 55
- Language: TypeScript
- License: MIT
- Published: 2026-09-20 · Updated: 2026-09-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/locoremind-locoagent

## The fork still publishes its binary under the upstream name

The reuse is not a design choice kept at arm's length; it is visible in the packaging. The manifest gives the executable a single bin entry named `claude-clean`, pointing at the CLI entrypoint, so that is the command a global install puts on your PATH rather than anything called locoagent. A shell script named `run-claude.sh` sits at the top of the tree beside the two installers and the agent-browser configuration. The page is explicit about the base: LocoAgent is a fork of the Claude Code CLI source tree, repurposed for social automation, keeping the agent loop, roughly 40 tools, roughly 90 slash commands and the Ink and React terminal UI, with a thin layer of skills, workflows, persona and an operation log on top. So the shape you get is a familiar terminal agent with a browser tool substituted for most of the interesting work.

## Several Anthropic packages resolve to local file stubs instead of a registry

The dependency block is where the fork shows its seams. Several entries use a `file:` reference into the repository rather than a published version: the Claude for Chrome MCP, three computer-use packages including Swift and input variants, the Claude agent SDK, the MCP bundle, and the sandbox runtime. Only the core Anthropic SDK appears with an ordinary version range. The start script reinforces the pattern by preloading a globals file from the same stubs directory, and that same preload is what auto-loads the env file at startup. This is a normal shape for a fork that wants to boot without a private registry, and it also means a `bun install` resolves several of the vendor's own packages from paths inside the checkout rather than from npm. Anyone auditing what actually runs should look in `stubs/` first, since that is where the versions that matter most are decided.

## There are two configuration surfaces and the older one wins

The recommended front door is four neutral variables: a provider name from a fixed set, an API key, a model id that can be left blank for the provider default, and a base URL used only for a self-hosted OpenAI-compatible endpoint. The env template calls these the block most people need and says they are translated to the right internal settings at startup so nobody has to learn which provider uses which legacy variable name. Underneath sits the older block, and the precedence is stated without ambiguity: an explicitly set legacy value always wins over the front door. The legacy block is also where the naming gets confusing. DeepSeek, OpenAI and any other OpenAI-compatible provider all share one namespace, and the page says plainly that the actual provider is decided by the base URL and the model together, not by the variable name. So a stale key in the old block silently defeats a correct new one.

## Both configuration examples stop in the middle of a variable name

The env template shown in the documentation ends mid-token. The agent behaviour section begins and the first key shown is `SKIP_PERM`, cut off before the name finishes, with no value and no comment. The shipped template has the same shape at the other end of the file: it reaches the Anthropic key and stops at `ANTHROPIC_M`. Neither is a rendering accident you can read past, because both blocks are the only worked examples of the agent behaviour keys in the repository. That leaves the front door as the documented part, which is exactly the part that needs no explanation, and the behaviour toggles as the undocumented part, which is the part where a value matters. Open the shipped env file rather than copying either block from the page.

## It drives a Chrome you are already signed into, on the DevTools port

The claim on the page is that this is a real browser with real sessions, driven over the DevTools protocol using your actual login cookies, with no API shortcuts and no headless fingerprint. The diagram puts the transport at port 9222, and running it needs a setup step for Chrome before the first start. The health check has a matching option that probes that port, so a failure to connect is something the tool can tell you about before an agent starts clicking. That is the security shape to reason about: the agent is not calling an API with a token, it is operating a browser profile that holds your sessions, which is also why the platform terms of service are the binding constraint rather than anything the tool can enforce. The concurrency rule is stated precisely and is worth knowing before you run two tasks at once: one isolated Chrome per platform, serial within a platform and parallel across platforms.

## The operation log is what stops the agent repeating a like

The loop is described as four steps rather than three. The agent perceives a page with a snapshot command, the model decides the next action, a tool acts with a click, a fill or an open, and then the result is verified before the loop continues. The verification is where the dedup promise lives: the operation log is checked first so nothing gets done twice, and the log is described as persistent across sessions. That is the mechanism behind the claim that the agent never repeats a like, a follow or a reply. It is also the single point of failure in that claim, since a log that is empty, moved or reset removes the guarantee entirely and nothing in the loop would notice. The other half of finishing a task in one pass is the platform skill system, which loads a full operation playbook, 37 operations for X.com, so a composite task does not need several round trips.

## Installation is a script fetched from GitHub and piped straight into a shell

The recommended install is one line, and on macOS, Linux or WSL2 it pipes a remote script into bash.

```bash
curl -fsSL https://raw.githubusercontent.com/LocoreMind/locoagent/main/install.sh | bash
```

The PowerShell equivalent pipes a remote script into iex. What the script does is more than fetch code: it installs Bun and agent-browser, clones the repository, scaffolds the env file, and runs the health check, then asks which provider you want, takes an API key, and lets you pick a model with the option to type any name. Two details reduce the risk a little. The installer prints the exact directory it will use and asks you to confirm, and it uses an empty current directory as-is, otherwise creates a subfolder, with an environment variable available to override that choice. It detects Chrome and Git rather than installing them, and warns you if they are missing. After it finishes you run the Chrome setup and then start.

## The manifest reads 1.1.0, the newest tag is v1.2.0, and the tests only cover scripts

Two tags landed on the same day in June, v1.1.0 in the morning and v1.2.0 in the early afternoon, and the manifest still declares version 1.1.0. So the number in the package and the number on the release list disagree by a minor version. The script list is where the rest of the project's shape is visible. There is a doctor for the environment, three tail variants for following the agent live and reading history, a run-tasks pair where one takes a dry-run flag, and six workflow entries covering list, status, summary, run and daemon mode. Typechecking is a single command. The test script is `bun test scripts`, which points at the scripts directory only and does not cover the source tree the fork actually spent its effort on. That is the honest boundary of what the tooling checks today.

## Conclusion

LocoAgent fits someone who already has a logged-in browser and wants the Claude Code loop aimed at a social platform, and the platform skills and the operation log are the parts that make it more than a repointed prompt loop. Three things to check before you point it at an account. The operation log's promise that nothing repeats depends on that log, so look at what it records before a bulk task. The verification step reads a Chrome you signed into with your own cookies, so anything the platform can see a human doing, it can do. And both configuration examples in the repository stop mid-variable, so treat the shipped file as the only complete reference. The package is MIT, the newest tag is v1.2.0, and the manifest still reads 1.1.0.

## FAQ

### What is LocoAgent built on?

It is a fork of the Claude Code CLI source tree. The agent loop, roughly 40 tools, roughly 90 slash commands and the Ink and React terminal UI are reused, with a LocoAgent layer for skills, workflows, persona and the operation log on top.

### What command does LocoAgent install?

The manifest's bin entry is named `claude-clean`, pointing at the CLI entrypoint, so that is the command an install puts on your PATH. A `run-claude.sh` script also sits at the top of the repository.

### How do I configure the model provider for LocoAgent?

With four neutral variables: `LLM_PROVIDER`, `LLM_API_KEY`, `LLM_MODEL` and `LLM_BASE_URL`, the last only for a self-hosted OpenAI-compatible endpoint. An explicitly set value in the older legacy block overrides the front door, and all OpenAI-compatible providers share one namespace there.

### Does LocoAgent run a headless browser?

No. It drives Chrome over the DevTools protocol on port 9222 using your actual login cookies. A setup step for Chrome runs before the first start, and the health check has a `--check-cdp` option to probe that port.

### What does Bun need to be installed for in LocoAgent?

Bun is the runtime and the package manager, and the prerequisites table says Node is not enough on its own. Node 18 or newer is still required by some dependencies, alongside agent-browser, Google Chrome and Git.

## Sources

- [License: MIT](https://github.com/LocoreMind/locoagent/blob/main/LICENSE)
- [LocoreMind/locoagent on GitHub](https://github.com/LocoreMind/locoagent)
- [Project website](https://locoremind.com/blog/locoagent)
- [README](https://github.com/LocoreMind/locoagent/blob/main/README.md)
- [Releases](https://github.com/LocoreMind/locoagent/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/locoremind-locoagent
