> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cowagent.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Upgrade

> How to upgrade CowAgent

## Recommended: One-line upgrade

Use `cow update` to pull the latest code and restart the service in one step:

```bash theme={null}
cow update
```

The command runs the following automatically:

1. Pull the latest code (`git pull`)
2. Stop the running service
3. Update Python dependencies
4. Reinstall the CLI
5. Start the service

<Note>
  If the Cow CLI is not installed, `./run.sh update` performs the same operations.
</Note>

## Web console one-click update

Source installs can also upgrade from the Web console without opening a terminal.

1. Click the version string in the left sidebar footer to open the pop-up menu. Opening it does **not** contact GitHub.
2. Click **Check for update** to fetch version info — the only network request. If a newer version exists, the same row turns into **Update now** with a small red dot.
3. Click **Update now**. The console reuses the same path as `cow update` (`git pull`, dependency install, CLI reinstall) and then restarts the service. The **Release notes** entry opens the GitHub releases page for the full changelog.

The update only touches the git checkout. User data lives outside the repo (`agent_workspace`, default `~/cow`) and `config.json` is git-ignored, so `git pull` never overwrites them — no backup is taken. The updater records the current git commit; if the new code fails to import, it resets the checkout to that commit and leaves the running process untouched.

After a successful update the console reconnects on its own and shows the new version.

<Note>
  Docker images and the packaged desktop app cannot use this button. Docker stays on `docker compose pull`; the desktop client keeps its built-in updater. On Windows, run `cow update` in a terminal — the Web console cannot restart that process from inside itself.
</Note>

### Rollback

If a successful update misbehaves, reset to the previous commit:

```bash theme={null}
cow stop
git reset --hard <previous-commit>   # recorded in tmp/web-update-status.json
cow start
```

## Manual upgrade

Run the following inside the project root:

```bash theme={null}
git pull
pip3 install -r requirements.txt
pip3 install -e .
```

Then restart the service:

```bash theme={null}
# Using Cow CLI (recommended)
cow restart

# Or using run.sh
./run.sh restart

# Or restart manually with nohup
kill $(ps -ef | grep app.py | grep -v grep | awk '{print $2}')
nohup python3 app.py & tail -f nohup.out
```

## Docker upgrade

Run the following in the directory containing `docker-compose.yml`:

```bash theme={null}
sudo docker compose pull
sudo docker compose up -d
```

<Tip>
  Back up `config.json` before upgrading. For Docker deployments, mount the workspace directory as a volume to persist data across upgrades.
</Tip>

## Desktop client upgrade

The [desktop client](/guide/desktop) has built-in auto-update: it checks for new versions automatically and prompts you, so you can download and restart to upgrade in one click.

You can also grab the latest version anytime from the [download page](https://cowagent.ai/download/).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.