Each bot gets its own computer and stays online
Memoh assigns a bot an isolated workspace with files, a desktop, browser access, networking, and saved memory. The server keeps that workspace available while your laptop is closed. You can use Memoh's built-in agent or put Claude Code and Codex inside the managed environment, then reach the bot from the web or a supported chat service. That is a larger promise than a self-hosted chat page.
The repository matches that scope. commit 8603825 contained 4,312 files, about 809,113 source lines, and a 43.9 MB checkout before dependencies. It mixes Go services with pnpm workspaces for web, desktop, SDK, configuration, and runtime packages. Our scan found 17 CI workflow files, a tests directory, and Compose configuration. There was no Dockerfile at the repository root, though Dockerfiles live under the project's deployment directories.
The one-line installer starts six core services and a privileged server
The README offers curl -fsSL https://memoh.sh | sh, and the script generates configuration before starting Docker Compose. Under that short command sits a current base file with PostgreSQL, pgvector, a migration job, server, channel, and web services. The server runs privileged and joins the host PID namespace so it can operate nested workspaces. Memoh's own deployment guide says to use it only in a trusted environment.
Production setup needs more than accepting installer defaults. The guide tells operators to replace the admin password, JWT secret, PostgreSQL password, and shared internal RPC secret, then add HTTPS, firewall rules, resource limits, and backups. The server's default memory ceiling is 8 GB. Model providers and chat channels bring more credentials. The 1,144 MB installed pnpm tree from our run covers repository development, not container images, databases, or bot workspace images.
What happened when we ran it
Our sandbox installed 1,050 pnpm packages in 14 seconds and occupied 1,144 MB. The root package had no generic build script or target, so the lab skipped that step rather than substituting a different command. The checkout had monorepo workspaces and a tests directory. These measurements describe commit 8603825 in an unprivileged Debian container with 3 CPUs and 8 GB of RAM.
Vitest ran for 103 seconds and exited 1. It reported 1,959 passing tests and 9 failures out of 1,968, with 200 passing files and 6 failed files out of 206. The summary attributes 5 failures to desktop/src/shared/server-connection.test.ts, 3 to docker/server-entrypoint.test.ts, and 1 to web/src/lib/ui-icon-contract.test.ts. The supplied tail has no assertion details, so it does not establish a shared cause.
Workspace isolation requires broad host authority
Giving each bot a computer explains the privileged server, nested containerd data, CNI state, host PID visibility, workspace images, and exposed WebRTC port. It also changes the threat model. An ordinary web application can often run with a narrow container profile. Memoh's main service manages the environments where agents execute commands and browse, so host placement, image trust, network egress, secret scope, and deletion behavior all need review before outside users can create bots.
Two open v0.20.0 reports show where that machinery can hurt. Issue 1301 reproduces a first workspace-image pull exceeding 5 minutes and leaving a bot stuck in creating, without a workspace or an enabled retry control. Issue 1307 reports headed Chromium crashing after restart on an Apple Silicon setup, which leaves the browser CDP endpoint unreachable. Across a 4,312-file system, those paths deserve live acceptance tests rather than a successful login page.
Memory and chat channels turn a bot into an ongoing service
Memoh can keep context across sessions and route conversations through Telegram, Discord, Lark, WeChat, the web, email, and webhooks. Its pgvector service supports semantic memory search, while external Mem0 and OpenViking providers are also documented. MCP tools and a connector gateway expand what an agent can reach. Version 0.20.0 adds direct Codex runtime work, Claude Code session controls, encrypted agent credential storage, and app authorization changes.
Every connection adds state that outlives one chat. The Compose deployment splits the server and channel runtime with a shared secret, and provider or channel tokens must be rotated on their own schedules. Remote computers use a Node runtime enrollment key saved under the user's home directory. With 1,050 packages in the development install and separate container images in production, upgrades should include database backups, credential checks, workspace creation, channel delivery, and a real agent turn.
September activity is fast, and 39 issues remain open
GitHub recorded 2,498 stars and a September 18, 2026 push when checked. Release v0.20.0 arrived on September 15. The tracker contained 39 open issues and 26 open pull requests, rather than the combined count GitHub shows on the repository header. Several fixes for ACP startup, Claude Code MCP results, desktop reconnection, and model persistence closed on September 18, which shows active maintenance around reported failures.
Fast maintenance also means operators are adopting a moving system. Open reports cover quota release after bot deletion, workspace creation timeouts, browser startup, and image routing. Our run's 9 failed tests add another reason to trial a pinned release before putting durable work inside it. Create one expendable bot, reboot the stack, reconnect its channels, exercise browser use, delete it, and confirm storage is reclaimed. Those checks test the parts that make Memoh different.

