Skip to content

Gas City Native Agent Onboarding Playbook

Status: Active Playbook
Authority: BluCity-Docs/Engineering-Standard/operating-model/factory-operating-contract.md
Upstream Reference: docs.gascity.com/guides/configuring-an-agent


1. Purpose

This playbook governs how standing agents and specialist sessions are onboarded and configured in Gas City using native primitives. Agents are modeled along five orthogonal axes without custom model routers or proprietary provider abstractions.


2. The Five Native Agent Axes

Every agent configuration in city.toml or portable pack declarations (pack.toml) MUST declare its profile across five native axes:

Axis Scope Description Supported Options / Values
1. HARNESS Per Agent Agent CLI harness claude, codex, opencode, gemini, cursor, copilot
2. MODEL Per Agent Selected LLM model claude-3-7-sonnet, qwen3-coder:30b, gpt-4o, etc.
3. UPSTREAM Per Agent Endpoint provider / gateway Cloud provider, LiteLLM gateway, or local LM Studio (http://blu.tailcf98b3.ts.net:1234)
4. TRANSPORT Per Agent Driving mechanism exec, tmux, herdr
5. RUNTIME City / Environment-wide Session execution environment Host OS, Docker container, SSH remote

Do not collapse these into one field called provider. Use explicit terms: HARNESS, MODEL, UPSTREAM, TRANSPORT, RUNTIME.


3. Configuring Local LM Studio Upstream

To route low-cost, bulk, or classification work to local models via LM Studio:

  1. Declare the upstream in city.toml:

    [upstreams.lm-studio]
    description = "Local LM Studio — qwen3-coder over Tailnet"
    [upstreams.lm-studio.env]
    OPENAI_BASE_URL = "http://blu.tailcf98b3.ts.net:1234/v1"
    OPENAI_MODEL    = "qwen3-coder:30b"
    

  2. Bind the agent or Polecat pool to the upstream:

    [[agent]]
    name = "polecat"
    harness = "claude"
    upstream = "lm-studio"
    

  3. Secrets MUST remain environment variable references ($VAR), backed by 1Password (STD-AUTH-001 / AUTHENTICATE_ONCE=YES).


4. Onboarding Checklist for New Standing Agents

For every active agent onboarding:

[ ] AGENT= name specified in pack or city.toml
[ ] ROLE= functional responsibility documented
[ ] SCOPE= city (root) or rig (project-scoped)
[ ] HARNESS= selected CLI harness
[ ] MODEL= task-appropriate model
[ ] UPSTREAM= native upstream provider bound
[ ] TRANSPORT= session driver selected
[ ] RUNTIME= host/container runtime set
[ ] SECRET_REFERENCE= $VAR used, no plaintext tokens