feat: hire-an-agent should support --local-model to auto-configure llama agents #182

Closed
opened 2026-04-03 08:15:02 +00:00 by dev-bot · 0 comments
Collaborator

Problem

Setting up a local-model agent (like dev-qwen) currently requires manually editing docker-compose.yml to add an agents-llama service block, volumes, environment variables, and entrypoint override. This is error-prone and not reproducible by disinto init.

Current workflow

  1. disinto hire-an-agent dev-qwen dev — creates Forgejo user + profile repo (works)
  2. Manually edit docker-compose.yml to add agents-llama service with:
    • Custom entrypoint (entrypoint-llama.sh)
    • ANTHROPIC_BASE_URL pointing to local llama-server
    • ANTHROPIC_API_KEY=sk-no-key-required
    • FORGE_TOKEN_OVERRIDE with the new agent's token
    • Separate volumes (agent-data-llama, project-repos-llama)
    • CLAUDE_CONFIG_DIR, POLL_INTERVAL, etc.
  3. Manually add volume declarations
  4. docker compose up agents-llama -d

Desired workflow

disinto hire-an-agent dev-qwen dev \
  --local-model http://10.10.10.1:8081 \
  --poll-interval 300

This should:

  1. Create the Forgejo user + profile repo (already works)
  2. Auto-generate the agents-llama service block in docker-compose.yml (or a compose override file)
  3. Add the required volumes
  4. Set the correct environment variables (ANTHROPIC_BASE_URL, ANTHROPIC_API_KEY=sk-no-key-required, FORGE_TOKEN_OVERRIDE, CLAUDE_CONFIG_DIR, POLL_INTERVAL)
  5. Use entrypoint-llama.sh as the entrypoint
  6. Start the container

Design considerations

  • Compose override vs inline: using docker-compose.override.yml would keep the generated compose clean and survive re-runs of disinto init. This is probably the better approach.
  • Multiple local agents: the service name should include the agent name (e.g., agents-dev-qwen) to support multiple local model agents side by side.
  • Model endpoint validation: optionally check that the endpoint is reachable before starting.
  • Claude CLI path: needs to detect and mount the host Claude CLI binary (already done for the main agents container).

Files

  • bin/disintohire_an_agent() function
  • docker/agents/entrypoint-llama.sh — local model polling entrypoint
  • docker-compose.yml — generated compose template in generate_compose()
## Problem Setting up a local-model agent (like dev-qwen) currently requires manually editing docker-compose.yml to add an `agents-llama` service block, volumes, environment variables, and entrypoint override. This is error-prone and not reproducible by `disinto init`. ## Current workflow 1. `disinto hire-an-agent dev-qwen dev` — creates Forgejo user + profile repo (works) 2. Manually edit docker-compose.yml to add `agents-llama` service with: - Custom entrypoint (`entrypoint-llama.sh`) - `ANTHROPIC_BASE_URL` pointing to local llama-server - `ANTHROPIC_API_KEY=sk-no-key-required` - `FORGE_TOKEN_OVERRIDE` with the new agent's token - Separate volumes (`agent-data-llama`, `project-repos-llama`) - `CLAUDE_CONFIG_DIR`, `POLL_INTERVAL`, etc. 3. Manually add volume declarations 4. `docker compose up agents-llama -d` ## Desired workflow ```bash disinto hire-an-agent dev-qwen dev \ --local-model http://10.10.10.1:8081 \ --poll-interval 300 ``` This should: 1. Create the Forgejo user + profile repo (already works) 2. Auto-generate the `agents-llama` service block in docker-compose.yml (or a compose override file) 3. Add the required volumes 4. Set the correct environment variables (`ANTHROPIC_BASE_URL`, `ANTHROPIC_API_KEY=sk-no-key-required`, `FORGE_TOKEN_OVERRIDE`, `CLAUDE_CONFIG_DIR`, `POLL_INTERVAL`) 5. Use `entrypoint-llama.sh` as the entrypoint 6. Start the container ## Design considerations - **Compose override vs inline**: using `docker-compose.override.yml` would keep the generated compose clean and survive re-runs of `disinto init`. This is probably the better approach. - **Multiple local agents**: the service name should include the agent name (e.g., `agents-dev-qwen`) to support multiple local model agents side by side. - **Model endpoint validation**: optionally check that the endpoint is reachable before starting. - **Claude CLI path**: needs to detect and mount the host Claude CLI binary (already done for the main agents container). ## Files - `bin/disinto` — `hire_an_agent()` function - `docker/agents/entrypoint-llama.sh` — local model polling entrypoint - `docker-compose.yml` — generated compose template in `generate_compose()`
dev-bot added the
backlog
label 2026-04-03 08:15:02 +00:00
dev-qwen self-assigned this 2026-04-03 08:18:19 +00:00
dev-qwen added
in-progress
and removed
backlog
labels 2026-04-03 08:18:19 +00:00
dev-qwen removed their assignment 2026-04-03 08:55:09 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: disinto-admin/disinto#182
No description provided.