Skip to content

deploy: opt-in genie-ai-runtime backend in setup + systemd (#27) - #47

Closed
enjoyandlove wants to merge 1 commit into
GeniePod:mainfrom
enjoyandlove:feat/issue-27-jllm-backend-opt-in
Closed

deploy: opt-in genie-ai-runtime backend in setup + systemd (#27)#47
enjoyandlove wants to merge 1 commit into
GeniePod:mainfrom
enjoyandlove:feat/issue-27-jllm-backend-opt-in

Conversation

@enjoyandlove

Copy link
Copy Markdown
Contributor

Summary

Closes #27

Changes

  • deploy/setup-jetson.sh
    • Parse [services.llm].backend and [services.llm].systemd_unit from geniepod.toml with a tolerant awk reader (strips quotes, trailing comments, whitespace; accepts hyphenated aliases).
    • Step 5 now branches on the configured backend: checks llama-server for llama_cpp (default), jllm-server for genie_ai_runtime, and warns on unrecognized values without aborting.
    • The systemd enable loop and the final "Start services" hint resolve the LLM unit from config instead of hardcoding genie-llm.
  • deploy/systemd/genie-ai-runtime.service — new unit for /opt/geniepod/bin/jllm-server. Same flag surface as genie-llm.service, gated by ConditionPathExists so it no-ops when the binary isn't installed.
  • doc/configuration.md[services.llm].backend table, hyphenated-alias note, and the three-step flip checklist (set systemd_unit, install binary, re-run setup).
  • doc/deployment-and-ops.md — add genie-ai-runtime.service to the systemd unit inventory.

Test plan

  • On a config with no [services.llm].backend, setup-jetson.sh reports Checking llama.cpp backend (configured: llama_cpp) and enables genie-llm.service (regression — default path unchanged).
  • Set [services.llm].backend = "genie_ai_runtime" and systemd_unit = "genie-ai-runtime.service"; re-run setup — script reports the genie-ai-runtime check, enables genie-ai-runtime.service, and the final hint prints sudo systemctl start genie-ai-runtime.
  • With backend = "genie_ai_runtime" but jllm-server missing, setup prints the build/install instructions and the revert hint, and continues (does not abort).
  • Set backend = "bogus" — setup emits the WARN line and skips the binary check without failing.
  • Hyphenated alias "genie-ai-runtime" is accepted and behaves identically to the underscored form.
  • systemctl cat genie-ai-runtime.service matches the new unit; ExecStartPre cache-drop and SupplementaryGroups=video render are present.

@ai-hpc

ai-hpc commented May 18, 2026

Copy link
Copy Markdown
Contributor

Closing as superseded by the work that actually landed on main, not because anything was wrong with this PR — the design here is solid and matches the issue's opt-in plan exactly. Timing just played out differently.

Between this PR opening on 2026-05-17 and now, the runtime swap landed in a different shape via several smaller PRs:

Net effect: [services.llm].backend = "genie_ai_runtime" is the v1.0.0-alpha.9 default, genie-ai-runtime.service is on disk and enabled, setup-jetson.sh reads the configured backend and enables the right unit, and the auto-fallback path catches the "binary missing on fresh install" case. The opt-in phase from #27 got skipped because genie-ai-runtime v1.0.0 dropped before the alpha.8 GenieClaw cut and we went straight to default-with-fallback.

Closing #27 separately with a roll-up of where each acceptance criterion ended up. Thanks for the careful design on this one — the awk parser pattern in particular got picked up and used in the later PRs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

alpha.8+: swap llama-server backend for genie-ai-runtime (opt-in then default)

2 participants