CowAgent Docker & Self-Hosted Deployment

GitHub

Open-source super AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-model, multi-channel.

46,475 stars Python Python 1 file ยท ~9,927 tokens #ai#ai-agent#ai-agents#chatgpt-on-wechat#claude#claude-code#codex#cowagent
RAW Compose
1. Pull Image (DOCKERHUB) docker pull zhayujie/chatgpt-on-wechat
2. Docker Run (1-Click Launch) docker run -d --name cowagent -p 9899:9899 --restart always zhayujie/chatgpt-on-wechat
3. Podman Run podman run -d --name cowagent -p 9899:9899 --restart always zhayujie/chatgpt-on-wechat
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/zhayujie/chatgpt-on-wechat:latest
5. ORAS Pull (OCI Artifact) oras pull zhayujie/chatgpt-on-wechat
6. Compose Deployment docker compose up -d
docker/docker-compose.yml
Download .yml
version: '2.0'
services:
  chatgpt-on-wechat:
    image: zhayujie/chatgpt-on-wechat
    container_name: chatgpt-on-wechat
    security_opt:
      - seccomp:unconfined
    ports:
      - "9899:9899"
    environment:
      COW_LANG: 'auto'
      # Empty: web console only. Multiple: 'web, weixin, feishu'
      CHANNEL_TYPE: ''
      # Empty: deepseek-flash
      MODEL: ''
      DEEPSEEK_API_KEY: ''
      DEEPSEEK_API_BASE: 'https://api.deepseek.com/v1'
      MINIMAX_API_KEY: ''
      ZHIPU_AI_API_KEY: ''
      ARK_API_KEY: ''
      MOONSHOT_API_KEY: ''
      DASHSCOPE_API_KEY: ''
      CLAUDE_API_KEY: ''
      CLAUDE_API_BASE: 'https://api.anthropic.com/v1'
      OPEN_AI_API_KEY: ''
      OPEN_AI_API_BASE: 'https://api.openai.com/v1'
      GEMINI_API_KEY: ''
      GEMINI_API_BASE: 'https://generativelanguage.googleapis.com'
      VOICE_TO_TEXT: 'openai'
      TEXT_TO_VOICE: 'openai'
      VOICE_REPLY_VOICE: 'False'
      SPEECH_RECOGNITION: 'True'
      GROUP_SPEECH_RECOGNITION: 'False'
      USE_LINKAI: 'False'
      LINKAI_API_KEY: ''
      LINKAI_APP_CODE: ''
      FEISHU_APP_ID: ''
      FEISHU_APP_SECRET: ''
      DINGTALK_CLIENT_ID: ''
      DINGTALK_CLIENT_SECRET: ''
      WECOM_BOT_ID: ''
      WECOM_BOT_SECRET: ''
      # To access the web console from the host, set this to '0.0.0.0' and set WEB_PASSWORD
      WEB_HOST: '127.0.0.1'
      WEB_PASSWORD: ''
      AGENT: 'True'
      # Container is already an isolation boundary, so the agent runs unconfined inside it
      AGENT_PERMISSION_MODE: 'full-access'
      AGENT_MAX_CONTEXT_TOKENS: 50000
      AGENT_MAX_CONTEXT_TURNS: 20
      AGENT_MAX_STEPS: 20
      SELF_EVOLUTION_ENABLED: 'True'
      # Writable data root (config.json, run.log, credentials) โ€” kept separate
      # from the workspace so it survives image upgrades / container recreation.
      COW_DATA_DIR: '/home/agent/.cow'
    volumes:
      # Workspace: skills, memory, knowledge, mcp.json, conversation artifacts
      - ./cow:/home/agent/cow
      # Data root: config.json, run.log, credentials
      - ./cow-data:/home/agent/.cow