Skip to content

Configuration Files Details ​

This page lists every field of ~/.manyoyo/manyoyo.json. The file is JSON5 (comments allowed); the full template is manyoyo.example.json in the repository.

File and Priority ​

There is one config file: ~/.manyoyo/manyoyo.json. Top-level fields are the global config; runs.<name> is a run config loaded with -r <name>.

Priority: command line > runs.<name> > global config > defaults.

  • Scalar fields: the highest-priority value wins.
  • env: merged by key, later wins.
  • envFile, volumes, ports, imageBuildArgs: appended in the order global -> runs.<name> -> command line.
  • serverUser / serverPass: command line > runs.<name> > global config > environment variable > default.
json5
{
    "imageName": "ghcr.io/xcanwin/manyoyo",
    "imageVersion": "2.3.1-full",
    "runs": {
        "claude": {
            "envFile": ["/abs/path/anthropic_claudecode.env"],
            "yolo": "c"
        }
    }
}

Container and Image ​

FieldTypeDefaultDescription
containerNamestringmy-{YYYYMMDD-HHmmss}Container name; supports {now} (-> YYYYMMDD-HHmmss, e.g. 20261024-230915); hostPath / containerPath also support {quickChatPath}
hostPathstringcurrent directoryHost working directory mounted into the container
containerPathstringsame as hostPathWorking directory inside the container
imageNamestringghcr.io/xcanwin/manyoyoImage name (without version)
imageVersionstringnoneFormat x.y.z-suffix, e.g. 2.3.1-common, 2.3.1-full
containerModestringcommoncommon / dind / sock, see Container Modes
imageBuildArgsstring arraynoneBuild args KEY=VALUE, appended, e.g. TOOL=common

Environment, Volumes and Ports ​

FieldTypeMerge ruleDescription
envFilestring arrayappendEnvironment variable files, absolute paths only; read live in a new container on every command, so edits take effect for the next command
envobjectoverride by keyEnvironment variables set directly
volumesstring arrayappendhost:container[:ro]; host path may be absolute or start with ~ / $HOME
portsstring arrayappendPassed through as --publish, e.g. "8080:80"
json5
{
    "env": { "TZ": "Asia/Shanghai" },
    "volumes": ["~/.ssh:/root/.ssh:ro"],
    "ports": ["127.0.0.1:8443:443"]
}

For mount and sock mode risks, see Security.

Commands ​

FieldTypeDescription
yolostringc / gm / cx / oc (or claude / gemini / codex / opencode); skips permission prompts, see Agents
shellPrefixstringCommand prefix, often temporary env vars
shellstringMain command, e.g. claude
shellSuffixstringAppended after shell, e.g. resume --last; overridable by --ss or -- ... (the latter wins)
firstobjectRuns once after a new container is created, not when reusing one (containers created in the web UI, including quick chat, run it too; a failure is only reported in the session and the container is kept); has shellPrefix / shell / shellSuffix (override), env (merge by key), envFile (append)
networkobjectNetwork policy written at creation: preset (restricted default / allowlist / custom), outbound / inbound (rule arrays, each { "action": "allow", "target": "@host", "ports": "11434", "proto": "tcp" }, inbound uses source; variables and rules in Manage a container), expose; omitted = restricted by default
autostartstringbash script run by the in-container init on every container start; written when a container is created, then edited on the web "Set container" tab, see Manage containers
autostartOnServebooleanStart this container when serve starts
agentPromptCommandstringPrompt command template for web AGENT mode, must contain {prompt}; inferred from shell / yolo when empty
agentInstructionsstringSupplementary system prompt appended after the default one; the initial system prompt of containers created in the web UI (Claude Code, Codex, OpenCode)
agentInstructionsBuiltinEnabled / agentInstructionsCustomEnabledbooleanSwitches for the default / supplementary system prompt, true by default
quietstring arraySuppress output: tip / cmd / full
json5
{
    "first": { "shell": "echo setup-once", "env": { "BOOTSTRAP": "1" } },
    "shell": "codex",
    "shellSuffix": "resume --last"
}

Global-Only Fields ​

These fields only take effect in the global config, not in runs.<name>.

FieldTypeDefaultDescription
containerRuntimestringautoauto / docker / podman; auto prefers the private Podman, then a docker / podman whose daemon works. manyoyo doctor shows the selected runtime
updateCheckbooleantrueserve checks for a new version at most once a day; the request carries no local info, false sends nothing
mirrorsobjectofficial sourcesIn-container package sources apt / npm / pip (http(s):// URLs, empty = official), applied when a container is created; for apt give only the mirror host, e.g. https://mirrors.aliyun.com. Same-name variables in env win

Web Service ​

FieldTypeDefaultDescription
serverUserstringadminLogin username, env var MANYOYO_SERVER_USER
serverPassstringrandomLogin password, env var MANYOYO_SERVER_PASS
serve.titlestringshown dynamically by session Agent nameOnce set (even to an empty string) it is fixed; runs.<name>.serve beats global
serve.quickChatobjectnoneWeb "Quick Chat": path is the work root, run is the runs.<name> to use
serve.setupSkippedbooleannoneWritten as true by the web UI after the first-run wizard is skipped, so it stops popping up; remove it or set false to bring it back

For auth and public listening, see Web Service and Security.

Plugins ​

plugins.playwright configures manyoyo playwright; runs.<name>.plugins.playwright overrides the global one. Fields are described in Playwright Plugin; defaults are in manyoyo.example.json.

Debugging ​

bash
manyoyo config show             # merged global config
manyoyo config show -r claude   # merged result of one run config
manyoyo config command -r claude  # command that will run

If a setting has no effect, confirm the file is valid JSON5 and check the final value with config show; if an envFile is not loaded, confirm it is an absolute path.

Next ​

Released under the MIT License.