deploy: opt-in genie-ai-runtime backend in setup + systemd (#27) - #47
deploy: opt-in genie-ai-runtime backend in setup + systemd (#27)#47enjoyandlove wants to merge 1 commit into
Conversation
|
Closing as superseded by the work that actually landed on Between this PR opening on 2026-05-17 and now, the runtime swap landed in a different shape via several smaller PRs:
Net effect: 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. |
Summary
Closes #27
[services.llm].backend(llm: select backend from config #43, runtime: resolve llm service from config #40, core: expose configured llm backend #39) into the deploy layer so opt-in installs validate the right binary and enable the right systemd unit instead of silently falling back tollama-server/genie-llm.service.deploy/systemd/genie-ai-runtime.serviceforjllm-server, mirroringgenie-llm.serviceflag-for-flag so the OpenAI-compatible client ingenie-coreworks against either backend unchanged.Changes
[services.llm].backendand[services.llm].systemd_unitfromgeniepod.tomlwith a tolerant awk reader (strips quotes, trailing comments, whitespace; accepts hyphenated aliases).llama-serverforllama_cpp(default),jllm-serverforgenie_ai_runtime, and warns on unrecognized values without aborting.genie-llm./opt/geniepod/bin/jllm-server. Same flag surface asgenie-llm.service, gated byConditionPathExistsso it no-ops when the binary isn't installed.[services.llm].backendtable, hyphenated-alias note, and the three-step flip checklist (setsystemd_unit, install binary, re-run setup).genie-ai-runtime.serviceto the systemd unit inventory.Test plan
[services.llm].backend,setup-jetson.shreportsChecking llama.cpp backend (configured: llama_cpp)and enablesgenie-llm.service(regression — default path unchanged).[services.llm].backend = "genie_ai_runtime"andsystemd_unit = "genie-ai-runtime.service"; re-run setup — script reports the genie-ai-runtime check, enablesgenie-ai-runtime.service, and the final hint printssudo systemctl start genie-ai-runtime.backend = "genie_ai_runtime"butjllm-servermissing, setup prints the build/install instructions and the revert hint, and continues (does not abort).backend = "bogus"— setup emits the WARN line and skips the binary check without failing."genie-ai-runtime"is accepted and behaves identically to the underscored form.systemctl cat genie-ai-runtime.servicematches the new unit;ExecStartPrecache-drop andSupplementaryGroups=video renderare present.