Maintaining the EPFL deployment¶
This page contains server-side commands for GitHelp maintainers. User-facing instructions are in Using GitHelp on the EPFL lab server; operational failures are covered in Deployment troubleshooting.
SSH access¶
A local SSH alias can be configured as:
Host moove-gpus
HostName gpu217.rcp.epfl.ch
User githelp
Then connect with:
ssh moove-gpus
Repository location¶
The deployed checkout is expected at:
~/GitHelp
All commands below assume:
cd ~/GitHelp
Check the current deployment¶
List the running service and inspect its logs:
docker compose ps
docker compose logs -f githelp
Check the Streamlit health endpoint inside the container:
docker exec -it githelp curl http://localhost:8501/_stcore/health
The expected response is ok.
Update the deployment¶
git pull
docker compose up -d --build
docker compose ps
Inspect the logs after an update:
docker compose logs -f githelp
Restart or stop GitHelp¶
Restart only the GitHelp service:
docker compose restart githelp
Stop the Compose application:
docker compose down
Rebuild the image without cache¶
Use a clean image rebuild after dependency or Dockerfile changes:
docker compose down
docker compose build --no-cache
docker compose up -d
Verify GPU access¶
Check the host first:
nvidia-smi
Then inspect PyTorch inside the container:
docker exec -it githelp python -c "import torch; print(torch.__version__); print(torch.version.cuda); print(torch.cuda.is_available()); print(torch.cuda.device_count())"
The current Docker image is based on CUDA-enabled PyTorch 2.6. The exact device
count depends on NVIDIA_VISIBLE_DEVICES; docker-compose.yml currently selects
GPU 1, so do not assume that every host GPU will be visible in the container.
Monitor the selected GPU while generating an answer:
watch -n 1 nvidia-smi
Docker and Traefik routing¶
The Compose service:
runs Streamlit on internal port 8501;
joins the external traefik network;
exposes no Streamlit host port in the server Compose file;
uses Traefik’s /githelp route;
strips the /githelp prefix before forwarding requests to Streamlit;
mounts ./data at /app/data;
keeps Hugging Face models in the githelp_hf_cache volume.
Verify that GitHelp and Traefik share a network:
docker inspect root-traefik-1 --format '{{json .NetworkSettings.Networks}}'
docker inspect githelp --format '{{json .NetworkSettings.Networks}}'
Host and container paths¶
GitHelp can only read paths visible inside its container.
Purpose |
Host path |
Container path |
|---|---|---|
Cloned repositories |
|
|
Project corpora |
|
|
MMORE database |
|
|
Always enter the container path in the Streamlit project form.
Build the MMORE index manually¶
The Streamlit Build MMORE index action is preferred because it builds the corpus, exports it, and indexes it consistently. If indexing must be rerun from the shell:
docker exec -it githelp bash
Then run inside the container:
/opt/conda/bin/python /app/scripts/build_index.py \
--documents-path /app/data/projects/<project_name>/mmore_corpus.jsonl \
--collection-name mmore_docs
The application currently retrieves from the shared mmore_docs collection.
Using a different collection name requires corresponding retrieval
configuration and code changes. Building the index resets the local Milvus Lite
database, so this command replaces the previously indexed native project.
A successful run ends with:
MMORE index built successfully
Security note¶
GitHelp uses a local Milvus Lite database by default. If an external Milvus
service is introduced, keep it on an internal Docker network and do not publish
its ports on 0.0.0.0 unless access controls have been designed explicitly.