--- title: Manual Install description: Deploy CowAgent manually (source code / Docker) --- ## Source Code Deployment ### 1. Clone the project ```bash git clone https://github.com/zhayujie/CowAgent cd CowAgent/ ``` For network issues, use the mirror: https://gitee.com/zhayujie/CowAgent ### 2. Install dependencies Core dependencies (required): ```bash pip3 install -r requirements.txt ``` Optional dependencies (recommended): ```bash pip3 install -r requirements-optional.txt ``` ### 3. Install Cow CLI Install the command-line tool for managing services and skills: ```bash pip3 install -e . ``` Then use the `cow` command: ```bash cow help ``` This step is recommended. After installation you can use `cow start`, `cow stop`, `cow update` to manage the service, and `cow skill` to manage skills. Without the CLI, you can use `./run.sh` or `python3 app.py` to run. ### 4. Configure Copy the config template and edit: ```bash cp config-template.json config.json ``` Fill in model API keys, channel type, and other settings in `config.json`. See the [model docs](/models/index) for details. ### 5. Run **Using Cow CLI (recommended):** ```bash cow start ``` **Or run locally in foreground:** ```bash python3 app.py ``` By default, the Web console starts. Access `http://localhost:9899` to chat. **Background run on server (without CLI):** ```bash nohup python3 app.py & tail -f nohup.out ``` **Deploying on a server?** By default `web_host` only listens on `127.0.0.1` (local access). Set `web_host` to `0.0.0.0` in `config.json` to make the console reachable from outside, and set `web_password` to protect it. Don't forget to open port `9899` in your firewall or security group — ideally restricted to specific IPs. ## Docker Deployment Docker deployment does not require cloning source code or installing dependencies. For Agent mode, source deployment is recommended for broader system access. Requires [Docker](https://docs.docker.com/engine/install/) and docker-compose. **1. Download config** ```bash curl -O https://cdn.link-ai.tech/code/cow/docker-compose.yml ``` Edit `docker-compose.yml` with your configuration. **2. Start container** ```bash sudo docker compose up -d ``` **3. View logs** ```bash sudo docker logs -f chatgpt-on-wechat ``` **Running in Docker?** Set `WEB_HOST` to `0.0.0.0` in `docker-compose.yml` so the console is reachable from outside the container, and set `WEB_PASSWORD` to protect it. Make sure port `9899` is mapped to the host and open in your firewall or security group. ## Core Configuration ```json { "channel_type": "web", "model": "deepseek-v4-flash", "deepseek_api_key": "", "agent": true, "agent_workspace": "~/cow", "agent_max_context_tokens": 40000, "agent_max_context_turns": 30, "agent_max_steps": 15, "cow_lang": "auto" } ``` | Parameter | Description | Default | | --- | --- | --- | | `channel_type` | Channel type | `web` | | `model` | Model name | `deepseek-v4-flash` | | `agent` | Enable Agent mode | `true` | | `agent_workspace` | Agent workspace path | `~/cow` | | `agent_max_context_tokens` | Max context tokens | `40000` | | `agent_max_context_turns` | Max context turns | `30` | | `agent_max_steps` | Max decision steps per task | `15` | | `cow_lang` | Language for the UI, command text and system prompts; `auto` to detect, or set `zh` / `en` | `auto` | Full configuration options are in the project [`config.py`](https://github.com/zhayujie/CowAgent/blob/master/config.py).