Downcity
Quickstart

Configuration

downcity.json, PROFILE.md, and runtime configuration essentials

Configuration

Downcity is configured with three core files:

  • PROFILE.md: agent role and boundaries (required)
  • SOUL.md: stable operating principles (optional)
  • downcity.json: runtime configuration (required)

Key downcity.json fields

start (advanced only)

For city agent start, ports are auto-allocated by console.

So in normal usage you do not need start.port in project downcity.json.

Only configure start when manually running foreground runtime or debugging special host binding:

{
  "start": {
    "host": "0.0.0.0"
  }
}

execution

Agent model binding (maps to the city global model pool):

{
  "execution": {
    "type": "api",
    "modelId": "quality"
  }
}

Notes:

  • project runtime now binds through execution.modelId
  • for the current project runtime path, execution.type should be api
  • the old model.primary structure is no longer the recommended project-side format

services.chat

Chat channels and queue behavior:

{
  "services": {
    "chat": {
      "queue": {
        "maxConcurrency": 2,
        "mergeDebounceMs": 600,
        "mergeMaxWaitMs": 2000
      },
      "channels": {
        "telegram": {
          "enabled": true,
          "channelAccountId": "telegram-main"
        }
      }
    }
  }
}

channelAccountId binds to the global channel account registry in ~/.downcity/downcity.db (channel_accounts).

services.chat.queue notes:

  • maxConcurrency: max lane concurrency across different chat keys.
  • mergeDebounceMs: short debounce window for batching consecutive inbound messages in one run.
  • mergeMaxWaitMs: hard cap for the batching wait to avoid unbounded delay.

plugins.skill

Skills discovery roots:

{
  "plugins": {
    "skill": {
      "enabled": true,
      "paths": [".agents/skills"],
      "allowExternalPaths": false
    }
  }
}

plugins.*

Plugin config is maintained in project downcity.json.

Example for asr:

city asr on SenseVoiceSmall
city config get plugins.asr

Useful commands

city config get
city config get execution.modelId
city model list
city config unset services.chat.channels.telegram

Next