Skip to main content

Keeping it updated

The agent does not update itself. The version you install is the version you keep running until you replace it. Updating is a pull and a recreate, and takes about a minute.

Use the same password

Recreating the container reuses the stored token from the neurogrid-data volume, and that token is encrypted with your password. A different password cannot read it and the machine would have to be registered again with a new token.

Update

docker pull ghcr.io/neurogrid-ai-exchange/neurogrid-agent:latest

docker stop neurogrid-agent
docker rm neurogrid-agent

docker run -d --name neurogrid-agent \
--gpus all --restart unless-stopped \
--dns 1.1.1.1 --dns 8.8.8.8 \
-v neurogrid-data:/data \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/neurogrid/workloads:/var/lib/neurogrid/workloads \
-e AGENT_ENCRYPTION_PASSWORD="$AGENT_ENCRYPTION_PASSWORD" \
ghcr.io/neurogrid-ai-exchange/neurogrid-agent:latest

No --token this time. The stored one is still there.

On Compose it is shorter:

docker compose pull
docker compose up -d

Do it while you are idle

Recreating the container kills any job it is running, and a job that dies partway is a failure on your record. Check first:

docker ps --filter "name=neurogrid-job" --format '{{.Names}}'

Empty output means nothing is serving and you are free to update. If a job is running, either wait for it to finish or pause the listing in the console and update once it drains.

Which version am I on

docker inspect neurogrid-agent --format '{{.Config.Image}}'
docker images --digests | grep neurogrid-agent

:latest does not tell you much on its own — compare the digest against the package page to see whether a newer build exists.

Should I update automatically

You can, with a tool like Watchtower, but think about the trade first: an unattended update that lands mid-job kills that job. If you do automate it, restrict it to the agent container and give it a schedule during hours your card is usually idle.

Cleaning up old images

Each update leaves the previous image behind. They are small (~250 MB), but they add up:

docker image prune -f

That removes untagged images only. It will not touch the vLLM engine image (~20 GB) or your Hugging Face model cache, and you do not want it to — those are what make the next job start quickly.