changeset 271:13d61401c57d

redirect Copilot cache to service state Set XDG_CACHE_HOME from the configured inference state so the systemd service can extract Copilot outside its protected home directory. Co-authored-by: Copilot <[email protected]>
author MrJuneJune <me@mrjunejune.com>
date Fri, 07 Aug 2026 13:24:05 -0700
parents 358dd5950985
children 41a49c29a28f
files mrjunejune/inference_stack.sh mrjunejune/test/inference_stack_config_test.sh mrjunejune/test/production_inference_bundle_test.sh
diffstat 3 files changed, 13 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/mrjunejune/inference_stack.sh	Fri Aug 07 13:16:47 2026 -0700
+++ b/mrjunejune/inference_stack.sh	Fri Aug 07 13:24:05 2026 -0700
@@ -106,6 +106,7 @@
 litellm_port="${LITELLM_PORT:-4000}"
 default_state_root="${XDG_STATE_HOME:-$HOME/.local/state}/mrjunejune/inference"
 state_root="${MRJUNEJUNE_INFERENCE_STATE:-$default_state_root}"
+copilot_cache_root="$state_root/cache"
 litellm_pid=
 server_pid=
 
@@ -118,6 +119,7 @@
   fi
   printf 'copilot_token_dir=%s\n' \
     "${GITHUB_COPILOT_TOKEN_DIR:-$state_root/litellm-copilot}"
+  printf 'copilot_cache_dir=%s\n' "$copilot_cache_root"
   printf 'guest_inference=%s\n' \
     "${MRJUNEJUNE_ALLOW_GUEST_INFERENCE:-false}"
   exit 0
@@ -125,8 +127,9 @@
 
 if [[ "$mode" == "authenticate" ]]; then
   token_dir="${GITHUB_COPILOT_TOKEN_DIR:-$state_root/litellm-copilot}"
-  mkdir -p "$token_dir"
-  chmod 700 "$token_dir"
+  mkdir -p "$token_dir" "$copilot_cache_root"
+  chmod 700 "$token_dir" "$copilot_cache_root"
+  export XDG_CACHE_HOME="$copilot_cache_root"
   exec "$python" "$litellm_zip" --authenticate --token-dir "$token_dir"
 fi
 
@@ -193,8 +196,8 @@
   fi
   export LITELLM_MASTER_KEY
   token_dir="${GITHUB_COPILOT_TOKEN_DIR:-$state_root/litellm-copilot}"
-  mkdir -p "$state_root/copilot" "$token_dir"
-  chmod 700 "$state_root" "$state_root/copilot" "$token_dir"
+  mkdir -p "$state_root/copilot" "$token_dir" "$copilot_cache_root"
+  chmod 700 "$state_root" "$state_root/copilot" "$token_dir" "$copilot_cache_root"
 
   export GITHUB_COPILOT_TOKEN_DIR="$token_dir"
   if [[ ! -s "$GITHUB_COPILOT_TOKEN_DIR/access-token" ]]; then
@@ -238,6 +241,7 @@
   export MRJUNEJUNE_INFERENCE_SIDECAR_PATH="$sidecar_launcher"
   export MRJUNEJUNE_COPILOT_CLI_PATH="$copilot_cli"
   export COPILOT_SIDECAR_HOME="$state_root/copilot"
+  export XDG_CACHE_HOME="$copilot_cache_root"
   export LITELLM_BASE_URL="http://${litellm_host}:${litellm_port}/v1"
   export LITELLM_MODEL="${LITELLM_MODEL:-jrpg-copilot}"
   export LITELLM_WIRE_API="${LITELLM_WIRE_API:-completions}"
--- a/mrjunejune/test/inference_stack_config_test.sh	Fri Aug 07 13:16:47 2026 -0700
+++ b/mrjunejune/test/inference_stack_config_test.sh	Fri Aug 07 13:24:05 2026 -0700
@@ -15,6 +15,7 @@
 AUTH_BOOTSTRAP_PASSWORD_HASH=zenbu-scrypt\$v=1\$N=32768\$r=8\$p=1\$salt\$hash
 LITELLM_MASTER_KEY=sk-test-only-value
 GITHUB_COPILOT_TOKEN_DIR=$root/token-dir
+MRJUNEJUNE_INFERENCE_STATE=$root
 MRJUNEJUNE_ALLOW_GUEST_INFERENCE=true
 SERVER_HOST=127.0.0.1
 EOF
@@ -36,6 +37,7 @@
 grep -q "config=$root/mrjunejune/.config" <<<"$output"
 grep -q '^litellm_master_key=set$' <<<"$output"
 grep -q "copilot_token_dir=$root/token-dir" <<<"$output"
+grep -q "copilot_cache_dir=$root/cache" <<<"$output"
 grep -q '^guest_inference=true$' <<<"$output"
 if grep -q 'sk-test-only-value' <<<"$output"; then
   echo "Config check leaked the LiteLLM master key" >&2
--- a/mrjunejune/test/production_inference_bundle_test.sh	Fri Aug 07 13:16:47 2026 -0700
+++ b/mrjunejune/test/production_inference_bundle_test.sh	Fri Aug 07 13:24:05 2026 -0700
@@ -102,4 +102,7 @@
 grep -q '"public_visitor"' <<<"$output"
 grep -q '"invited_friend"' <<<"$output"
 grep -q '"june_admin"' <<<"$output"
+grep -q 'XDG_CACHE_HOME=' "$(
+  find -L "$bundle" -type f -name inference_stack.sh -print -quit
+)"
 "$python" "$litellm" --help >/dev/null