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