agentcache / start.sh
Yash030's picture
feat: migrate agentmemory to agentcache namespace, endpoints, and tools
12a6c9a
Raw
History Blame Contribute Delete
2.47 kB
#!/usr/bin/env bash
# Note: no set -e β€” sync failures must not kill the container
# Create agentcache data directories
mkdir -p /home/user/.agentcache
# =============================================================================
# Persistent storage via HF Dataset repo
# Secrets to set in HF Space settings:
# HF_TOKEN β€” write access to the dataset repo
# GEMINI_API_KEY β€” powers graph, embeddings, compression, crystals
# AGENTCACHE_DATASET_REPO β€” optional override (default: Yash030/agentmemory-python-data)
# =============================================================================
export AGENTCACHE_DATASET_REPO="${AGENTCACHE_DATASET_REPO:-${AGENTMEMORY_DATASET_REPO:-Yash030/agentmemory-python-data}}"
echo "[start] Restoring data from HF Dataset..."
python3 /app/sync.py restore
# Background sync loop β€” backs up every 5 minutes
(
while true; do
sleep 300
python3 /app/sync.py backup
done
) &
# Generate HMAC secret on first boot, persist it so it survives dataset restore
HMAC_FILE="/home/user/.agentcache/.hmac"
if [ ! -s "$HMAC_FILE" ]; then
SECRET="$(openssl rand -hex 32)"
printf '%s\n' "$SECRET" > "$HMAC_FILE"
chmod 600 "$HMAC_FILE"
echo "================================================================"
echo "agentcache: generated HMAC secret on first boot"
echo "AGENTCACHE_SECRET=$SECRET"
echo "Copy this to your Space secrets as AGENTCACHE_SECRET."
echo "It will not be printed again."
echo "================================================================"
fi
export AGENTCACHE_SECRET="${AGENTCACHE_SECRET:-${AGENTMEMORY_SECRET:-$(cat "$HMAC_FILE")}}"
# Write .env config for the daemon so it is loaded by src/app.py
cat > /home/user/.agentcache/.env <<EOF
GEMINI_API_KEY=${GEMINI_API_KEY}
AGENTCACHE_SECRET=${AGENTCACHE_SECRET}
AGENTCACHE_URL=http://localhost:7860
III_ENGINE_URL=ws://localhost:49134
GEMINI_MODEL=${GEMINI_MODEL:-gemini-2.5-flash}
EMBEDDING_PROVIDER=gemini
CONSOLIDATION_ENABLED=true
GRAPH_EXTRACTION_ENABLED=true
AGENTCACHE_REFLECT=true
AGENTCACHE_AUTO_COMPRESS=true
EOF
# Set the port for Flask application to run on (Hugging Face Space expects 7860)
export PORT=7860
export III_REST_PORT=7860
# Start Flask application in the foreground
echo "[start] Starting Flask application on port 7860..."
python3 src/app.py
# Perform a final backup on shutdown
echo "[start] Flask application exited. Performing final backup..."
python3 /app/sync.py backup