# mk-labs Honcho deriver worker (background queue consumer) # Managed by Ansible - honcho role # # Same image as the API; different command. The deriver pulls jobs off # the DB-backed queue and calls the LLM provider to perform theory-of-mind # derivations against user sessions. [Unit] Description=Honcho deriver worker After=network-online.target {{ honcho_postgres_container_name }}.service {{ honcho_container_name }}.service Wants=network-online.target Requires={{ honcho_postgres_container_name }}.service [Container] Image={{ honcho_image }} ContainerName={{ honcho_deriver_container_name }} Network={{ honcho_network_name }} # Run the deriver via the package's __main__ (not the helpers module). # src/deriver/deriver.py has no __main__ guard — loading it exits 0 in # ~3s and systemd treats that as a crash loop. The actual entry point # lives in src/deriver/__main__.py and is invoked via "python -m src.deriver". WorkingDir=/app Exec=/app/.venv/bin/python -m src.deriver # -- Database --------------------------------------------------------------- Environment=DB_CONNECTION_URI=postgresql+psycopg://{{ honcho_db_user }}:{{ honcho_db_password }}@{{ honcho_postgres_container_name }}:5432/{{ honcho_db_name }} # -- Auth ------------------------------------------------------------------- # Deriver does not serve HTTP, but it reads the same config object — keep # secrets aligned with the API container. Environment=AUTH_USE_AUTH=*** honcho_auth_enabled | string | lower }} Environment=AUTH_JWT_SECRET=*** honcho_jwt_secret }} # -- LLM provider keys ------------------------------------------------------ {% if honcho_llm_transport == 'anthropic' %} Environment=LLM_ANTHROPIC_API_KEY=*** honcho_anthropic_api_key }} {% endif %} # -- Deriver runtime -------------------------------------------------------- Environment=DERIVER_ENABLED={{ honcho_deriver_enabled | string | lower }} Environment=DERIVER_WORKERS={{ honcho_deriver_workers }} Environment=DERIVER_POLLING_SLEEP_INTERVAL_SECONDS={{ honcho_deriver_polling_seconds }} Environment=DERIVER_FLUSH_ENABLED={{ honcho_deriver_flush_enabled | string | lower }} Environment=DERIVER_MODEL_CONFIG__TRANSPORT={{ honcho_llm_transport }} Environment=DERIVER_MODEL_CONFIG__MODEL={{ honcho_deriver_model }} # -- Summary subsystem (the deriver triggers summaries periodically) -------- Environment=SUMMARY_MODEL_CONFIG__TRANSPORT={{ honcho_llm_transport }} Environment=SUMMARY_MODEL_CONFIG__MODEL={{ honcho_summary_model }} # -- Embeddings (off by default — see defaults/main.yml for rationale) ------ Environment=EMBED_MESSAGES={{ honcho_embed_messages | string | lower }} # -- Vector store ----------------------------------------------------------- Environment=VECTOR_STORE_TYPE=pgvector # Timezone matches host baseline Environment=TZ=America/Chicago Environment=LOG_LEVEL=INFO [Service] Restart=always TimeoutStartSec=180 [Install] WantedBy=multi-user.target default.target