RPi Auto-Start Setup for Medic SAM
Created: 2025-10-13 00:59:42 | Last updated: 2025-10-13 01:11:45 | Status: Public
RPi Auto-Start Setup for Medic SAM
This guide sets up auto-start for both llama-server and main.py on Raspberry Pi 5 boot using systemd.
1. Create Combined Startup Script
Create ~/medic-sam/startup.sh:
#!/bin/bash
CURRENT_USER=$(whoami)
MEDIC_SAM_DIR="/home/${CURRENT_USER}/medic-sam"
VENV_ACTIVATE="${MEDIC_SAM_DIR}/venv/bin/activate"
LLAMA_SERVER="${MEDIC_SAM_DIR}/llama.cpp/build/bin/llama-server"
MODEL_PATH="${MEDIC_SAM_DIR}/models/gemma-3-1b-it-UD-Q8_K_XL.gguf"
# Activate venv
source "${VENV_ACTIVATE}"
# Start llama-server in background
"${LLAMA_SERVER}" \
-m "${MODEL_PATH}" \
--ctx-size 512 \
--n-predict 60 \
--temp 1.0 \
--top-p 0.95 \
--top-k 64 \
--host 127.0.0.1 \
--port 8080 &
# Wait for server to start
sleep 5
# Start main.py in foreground
cd "${MEDIC_SAM_DIR}/app"
python main.py
Make it executable:
chmod +x ~/medic-sam/startup.sh
2. Create Systemd Service
Create /etc/systemd/system/medic-sam.service:
[Unit]
Description=Medic SAM Service
After=network.target
[Service]
Type=forking
User=ill13
WorkingDirectory=/home/ill13/medic-sam
ExecStart=/usr/bin/screen -dmS medic-sam /home/ill13/medic-sam/startup.sh
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
3. Enable and Start Service
sudo systemctl daemon-reload
sudo systemctl enable medic-sam.service
sudo systemctl start medic-sam.service
4. Check Status and Logs
Check service status:
sudo systemctl status medic-sam.service
View live logs:
sudo journalctl -u medic-sam.service -f
How It Works
- llama-server runs in the background
- main.py runs in the foreground
- Both use the same virtual environment
- Systemd auto-restarts if main.py crashes
- Both services auto-start on boot
Useful Commands
# Stop service
sudo systemctl stop medic-sam.service
# Restart service
sudo systemctl restart medic-sam.service
# Disable auto-start
sudo systemctl disable medic-sam.service
# View all logs
sudo journalctl -u medic-sam.service