{"owner":"langbot-app","repo":"LangBot","hasDocker":true,"hasCompose":true,"hasDockerfile":false,"composePath":"docker/docker-compose.yaml","servicesCount":3,"services":[{"name":"langbot_plugin_runtime","image":"rockchin/langbot:latest","restart":"on-failure","command":"uv run --no-sync -m langbot_plugin.cli.__init__ rt","ports":["5401:5401"],"environment":["TZ=Asia/Shanghai","LANGBOT_PLUGIN_RUNTIME_CONTROL_TOKEN=${LANGBOT_PLUGIN_RUNTIME_CONTROL_TOKEN:-}","LANGBOT_BLOCKING_EXECUTOR_MAX_WORKERS=${LANGBOT_BLOCKING_EXECUTOR_MAX_WORKERS:-8}","LANGBOT_BLOCKING_EXECUTOR_MAX_PENDING=${LANGBOT_BLOCKING_EXECUTOR_MAX_PENDING:-128}","LANGBOT_BLOCKING_EXECUTOR_MAX_INFLIGHT_PER_SCOPE=${LANGBOT_BLOCKING_EXECUTOR_MAX_INFLIGHT_PER_SCOPE:-4}"],"volumes":["./data/plugins:/app/data/plugins"]},{"name":"langbot_box","image":"rockchin/langbot:latest","restart":"on-failure","command":"uv run --no-sync -m langbot_plugin.cli.__init__ box","environment":["TZ=Asia/Shanghai","LANGBOT_BOX_CONTROL_TOKEN=${LANGBOT_BOX_CONTROL_TOKEN:-}","LANGBOT_BLOCKING_EXECUTOR_MAX_WORKERS=${LANGBOT_BLOCKING_EXECUTOR_MAX_WORKERS:-8}","LANGBOT_BLOCKING_EXECUTOR_MAX_PENDING=${LANGBOT_BLOCKING_EXECUTOR_MAX_PENDING:-128}","LANGBOT_BLOCKING_EXECUTOR_MAX_INFLIGHT_PER_SCOPE=${LANGBOT_BLOCKING_EXECUTOR_MAX_INFLIGHT_PER_SCOPE:-4}"],"volumes":["${LANGBOT_BOX_ROOT:-${PWD}/data/box}:${LANGBOT_BOX_ROOT:-${PWD}/data/box}","/var/run/docker.sock:/var/run/docker.sock"]},{"name":"langbot","image":"rockchin/langbot:latest","restart":"on-failure","ports":["5300:5300","2280-2285:2280-2285"],"environment":["TZ=Asia/Shanghai","LANGBOT_PLUGIN_RUNTIME_CONTROL_TOKEN=${LANGBOT_PLUGIN_RUNTIME_CONTROL_TOKEN:-}","LANGBOT_BOX_CONTROL_TOKEN=${LANGBOT_BOX_CONTROL_TOKEN:-}","SYSTEM__BLOCKING_EXECUTOR__MAX_WORKERS=${LANGBOT_BLOCKING_EXECUTOR_MAX_WORKERS:-8}","SYSTEM__BLOCKING_EXECUTOR__MAX_PENDING=${LANGBOT_BLOCKING_EXECUTOR_MAX_PENDING:-128}","SYSTEM__BLOCKING_EXECUTOR__MAX_INFLIGHT_PER_SCOPE=${LANGBOT_BLOCKING_EXECUTOR_MAX_INFLIGHT_PER_SCOPE:-4}","BOX__LOCAL__HOST_ROOT=${LANGBOT_BOX_ROOT:-${PWD}/data/box}","BOX__LOCAL__DEFAULT_WORKSPACE=default","SKILLS__ROOT=${LANGBOT_SKILLS_ROOT:-${LANGBOT_BOX_ROOT:-${PWD}/data/box}/skills}","BOX__LOCAL__ALLOWED_MOUNT_ROOTS=${LANGBOT_BOX_ROOT:-${PWD}/data/box}","BOX__DOCKER__CPU_LIMIT_ENABLED=${LANGBOT_BOX_DOCKER_CPU_LIMIT_ENABLED:-true}"],"volumes":["./data:/app/data","${LANGBOT_BOX_ROOT:-${PWD}/data/box}:${LANGBOT_BOX_ROOT:-${PWD}/data/box}"]}],"exposedPorts":["5401","5300"],"dockerRunCommand":"docker run -d --name langbot -p 5401:5401 --restart always rockchin/langbot:latest","podmanRunCommand":"podman run -d --name langbot -p 5401:5401 --restart always rockchin/langbot:latest","skopeoInspectCommand":"skopeo inspect docker://docker.io/rockchin/langbot:latest","orasPullCommand":"oras pull rockchin/langbot:latest","registryMeta":{"provider":"dockerhub","image":"rockchin/langbot","canonicalImage":"docker.io/rockchin/langbot:latest","latestTag":"latest","cliCommands":{"dockerRun":"docker run -d --name langbot -p 5401:5401 --restart always rockchin/langbot:latest","dockerPull":"docker pull rockchin/langbot:latest","podmanRun":"podman run -d --name langbot -p 5401:5401 --restart always rockchin/langbot:latest","skopeoInspect":"skopeo inspect docker://docker.io/rockchin/langbot:latest","orasPull":"oras pull rockchin/langbot:latest","composeYaml":"services:\n  langbot:\n    image: rockchin/langbot:latest\n    restart: unless-stopped\n    ports:\n      - \"5401:5401\""}}}