Try describing what you need:

Codeman logo

Codeman

★ 828

A self-hosted alternative to Conductor

MIT LicenseOpen Source — No PaywallSingle Container — single container — minimal hosting footprintSourceNo external DB8+ active committers (12mo)

About

Codeman is a self-hosted control panel for AI coding agents. It is aimed at developers who want to run tools like Claude Code, OpenCode, Codex, or Gemini CLI in persistent sessions, observe their...

Community Ratings

No ratings yet

Features

  • persistent tmux sessions
  • live terminal streaming in browser
  • idle detection and respawn cycling
  • auto-resume after usage limits reset
  • scheduled jobs
  • real-time subagent visualization
  • mobile-optimized web UI
  • QR login
  • push notifications
  • multi-user mode

Details

Last Updated
Nov 1, 2026
Created
Jan 21, 2026
Install Methods
source
Requirements
Node.js 22+tmuxWSL (Windows)
Authentication
local
Backup & Export
tmux persistencescrollback replay
Privacy & Independence
No TelemetryNo Cloud RequiredOffline Capable
User Model
Multi-UserMulti-Tenant
Deployment

Deployment: Docker Compose ✓Single Container — minimal hosting footprintsingle container

Run Codeman yourself

Pick how much you want to manage.

Is this your project? Sponsor a listing

Run Codeman with Docker Compose

Compose file from the Codeman project repository.

1 service

no resource limits declared

needs persistent storage (6 volumes)

docker/docker-compose.yaml · @ 9466acf · scanned Sep 23, 2026

name: codeman

services:
  codeman:
    build:
      context: ..
      dockerfile: docker/server.Dockerfile
      args:
        CODEMAN_RUNTIME_USER: ${CODEMAN_RUNTIME_USER}
        PGID: ${PGID:-1000}
        PUID: ${PUID:-1000}
    image: ${CODEMAN_IMAGE}
    init: true
    restart: unless-stopped
    ports:
      - "${CODEMAN_PORT}:${CODEMAN_PORT}"
    environment:
      # Tells the self-updater to restart by exiting (the restart policy below
      # relaunches it) rather than by looking for an init system that is not
      # here. Also set in the image; repeated so a container started without the
      # image default still self-identifies.
      CODEMAN_IN_CONTAINER: "1"
      # This file sets `restart: unless-stopped` below, so the updater may restart
      # the server by EXITING. Declared here and only here, never in the image: a
      # container started by plain `docker run` has no restart policy unless the
      # operator gave it one, and there the updater asks the daemon instead and
      # stages the update for a manual restart when it cannot get an answer.
      CODEMAN_RESTART_BY_EXIT: "1"
      CODEMAN_DOCKER_BRIDGE_HOOKS: ${CODEMAN_DOCKER_BRIDGE_HOOKS}
      # Host-side equivalent of the runtime user's HOME. Docker case seed,
      # credential and hook mounts are translated into the daemon namespace.
      CODEMAN_DOCKER_HOST_HOME: ${CODEMAN_APPDATA_PATH}
      CODEMAN_DOCKER_DISABLE_SWAP_LIMIT: ${CODEMAN_DOCKER_DISABLE_SWAP_LIMIT}
      CODEMAN_CASES_PATH: ${CODEMAN_CASES_PATH}
      # Extra Host-header allowlist entries for a reverse-proxied deployment
      # (docker/README.md, "Reverse-proxy host allowlist"). Optional, so it
      # defaults to empty rather than requiring a line in every .env.
      CODEMAN_ALLOWED_HOSTS: ${CODEMAN_ALLOWED_HOSTS:-}
      CODEMAN_HOST: ${CODEMAN_HOST}
      CODEMAN_PASSWORD: ${CODEMAN_PASSWORD}
      CODEMAN_PORT: ${CODEMAN_PORT}
      CODEMAN_USERNAME: ${CODEMAN_USERNAME}
      GEMINI_API_KEY: ${GEMINI_API_KEY}
      PGID: ${PGID:-1000}
      PUID: ${PUID:-1000}
      TZ: ${TZ}
    group_add:
      # Retain access to the host Docker socket without running as root.
      - ${DOCKER_SOCKET_GID:-999}
    volumes:
      # Application data and CLI credentials persist on the configured host
      # path, rather than in a Docker-managed volume.
      - type: bind
        source: ${CODEMAN_APPDATA_PATH}
        target: /home/${CODEMAN_RUNTIME_USER}
      # Docker cases are sibling containers on the host daemon. Their workspace
      # must be visible to Codeman at the same absolute path used by that daemon.
      - type: bind
        source: ${CODEMAN_CASES_PATH}
        target: ${CODEMAN_CASES_PATH}
      # Codeman uses the host daemon to create isolated Docker cases. This is
      # Docker-outside-of-Docker, not Docker-in-Docker.
      - type: bind
        source: ${DOCKER_SOCKET}
        target: /var/run/docker.sock
      # The application source, so App Settings -> Updates can update in place.
      # This is the SAME checkout used as the build context above, mounted over
      # the image's baked copy: a `git checkout` performed inside the container
      # then lands on the host and survives the container being recreated.
      # Without it the pull would go to the container's writable layer and be
      # silently discarded by the next `up`. See docs/docker-self-update.md.
      # Defaults to `..` — the build context above — which Compose resolves
      # against the project directory, so plain `docker compose up` works with
      # no extra configuration. Set CODEMAN_REPO_PATH only to point elsewhere.
      - type: bind
        source: ${CODEMAN_REPO_PATH:-..}
        target: /opt/codeman
      # Build artefacts live in named volumes layered OVER the repo bind mount,
      # so `npm install` and `npm run build` inside the container never write
      # into the host checkout. That keeps container-compiled native modules
      # (node-pty is built from source here) out of a checkout that may also be
      # used to run Codeman natively, and keeps `git status` clean. Docker seeds
      # an EMPTY named volume from the image, so the first start inherits the
      # image's already-built node_modules and dist rather than paying for a
      # bootstrap build.
      - type: volume
        source: codeman-node-modules
        target: /opt/codeman/node_modules
      - type: volume
        source: codeman-dist
        target: /opt/codeman/dist
    extra_hosts:
      - "host.docker.internal:host-gateway"
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - ALL
    cap_add:
      # The entrypoint corrects bind-mount ownership as root before dropping to
      # PUID:PGID. Everything not listed here remains dropped by cap_drop above.
      # test/docker-entrypoint.test.ts pins this list against what the
      # entrypoint and `init: true` actually need, so a capability cannot go
      # missing silently again.
      - CHOWN
      - DAC_OVERRIDE
      # `init: true` makes tini PID 1, and tini stays ROOT while the entrypoint
      # drops the server to PUID. Signalling a process of a different uid needs
      # CAP_KILL; without it tini's SIGTERM forward fails ("Unexpected error
      # when forwarding signal: 'Operation not permitted'"), tini dies, and the
      # PID namespace teardown SIGKILLs the server instead of letting
      # `server.stop()` flush state on every `docker compose down`/`restart`.
      - KILL
      - SETGID
      - SETUID
    healthcheck:
      test:
        - CMD-SHELL
        - >-
          node -e "fetch('http://127.0.0.1:${CODEMAN_PORT}/api/status').then((response) => process.exit(response.status < 500 ? 0 : 1)).catch(() => process.exit(1))"
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 30s

volumes:
  # Container-owned build artefacts. They persist across container recreation,
  # so an in-app update's `npm install` output is not thrown away by the next
  # `up`, and they are seeded from the image on first use. Removing them (or
  # `docker compose down -v`) is the supported reset: the next start rebuilds
  # from the image.
  codeman-node-modules:
  codeman-dist:

This file may be out of date. Check the Codeman website for current setup steps.

Track your self-hosted stack

Bookmark software to try, rate tools you've used, and keep your collection in one place.

Metadata extracted from README on Aug 4, 2026

Related Software

Claude Squad logo

Claude Squad

8.7k
Claude Squad is a terminal app for managing multiple AI coding agents in separate isolated workspaces so tasks can run in parallel.
AI Coding AssistantAI AgentsAutomation Tools
Details
openrig logo

openrig

8.5k
OpenRig is a CLI tool for defining, launching, and managing a team of AI coding agents in a persistent shared rig.
AI AgentsAI Coding AssistantAI Harness+1
Details
openclaude logo

openclaude

34.3k
OpenClaude is an open-source terminal-first coding agent CLI for cloud and local model providers.
AI Coding AssistantAI AgentsAI Tooling+1
Details
collie logo

collie

1.5k
ColliePWA is a self-hosted mobile PWA for driving terminal AI agents like Claude Code, Codex, and OpenCode from a phone.
Mobile terminalsSelf Hosting SolutionsRemote Access+3
Details
open-terminal logo

open-terminal

3.5k
Open Terminal is a self-hosted terminal service for AI agents and automation tools that provides command execution, file management, and code running through a REST API.
Self Hosting SolutionsAutomation ToolsAI Agents+2
Details
Aider logo

Aider

49.9k
AI pair programming tool for working with large language models directly in the terminal.
Artificial IntelligenceAI Coding AssistantPermissive License+1
Details
NanoClaw logo

NanoClaw

31.1k
An AI assistant that runs agents in isolated containers and can be customized through Claude Code skills.
Claws & ClankersAI AgentsAI Coding Assistant+2
Details
Claude Code logo

Claude Code

154.2k
Claude Code is an agentic coding tool that runs in the terminal and helps with coding tasks, code explanation, and git workflows using natural language commands.
Artificial IntelligenceAI Coding AssistantAI Harness+2
Cloud Required
Details
litter logo

litter

2.5k
Native iOS and Android client for Codex and Local Studio that lets users connect to local or remote servers, manage sessions, and run agentic coding workflows from a phone.
AI Coding AssistantAI AgentsRemote Access
Details
Coder logo

Coder

17.3k
Coder is a self-hosted platform for cloud development environments and AI coding agents.
IDE ToolsPlatform as a ServiceRemote Access+1
Open Core
Details
Vibe Kanban logo

Vibe Kanban

28.6k
Vibe Kanban is a kanban-based workspace for planning work, running coding agents, reviewing diffs, and shipping changes.
Dev Project ManagementAI Coding AssistantAI Agents+2
6 ContainersTelemetry: Opt-Out
Details
runtm logo

runtm

304
Runtm is an open-source platform for spinning up isolated sandboxes where coding agents can build, test, and deploy software.
Self Hosting SolutionsAI AgentsAI Tooling+1
4 Containers
Details