id = "code-server"
name = "code-server"
homepage = "https://github.com/coder/code-server"
description = "VS Code in the browser."
executables = ["code-server"]
[dotfiles]
paths = [
"[configHome]/code-server/config.yaml",
"[xdgData]/code-server/User/",
]
exclude = [
"[xdgData]/code-server/extensions/",
"[xdgData]/code-server/coder-logs/",
"[xdgData]/code-server/heartbeat",
]
secret = []
side_effect = false
[[dotfiles.secret_paths]]
file = "[configHome]/code-server/config.yaml"
match = { key_path = ["password", "hashed-password"] }
[commands]
format = 1
label = "Run code-server"
description = "Serve VS Code in the browser, or manage its extensions. Passwords and tokens are deliberately not fields; set them in the config file or environment."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false }
[[commands.source]]
id = "help"
kind = "help"
url = "https://github.com/coder/code-server/blob/main/src/node/cli.ts"
revision = "2026-10-27"
evidence = """
code-server [options] [path]
--auth The type of authentication to use. (password | none)
--bind-addr Address to bind to in host:port. You can also use $PORT to override the port.
--config Path to yaml config file. Every flag maps directly to a key in the config file.
--user-data-dir Path to the user data directory.
--extensions-dir Path to the extensions directory.
--disable-telemetry Disable telemetry.
--open Open in browser on startup. Does not work remotely.
--log trace | debug | info | warn | error
--list-extensions List installed VS Code extensions.
--force Avoid prompts when installing VS Code extensions.
--install-extension Install or update a VS Code extension by id or vsix. To install a specific version provide `@${version}`.
--uninstall-extension Uninstall a VS Code extension by id.
"""
[[commands.field]]
id = "folder"
label = "Folder to open"
type = "path"
position = 0
path = { kind = "directory", role = "input" }
sources = ["help"]
[[commands.field]]
id = "bind_addr"
label = "Bind address"
description = "host:port, e.g. 127.0.0.1:8080."
type = "string"
option = ["--bind-addr"]
sources = ["help"]
[[commands.field]]
id = "auth"
label = "Authentication"
type = "enum"
option = ["--auth"]
choices = [{ value = "password", label = "password" }, { value = "none", label = "none" }]
sources = ["help"]
[[commands.field]]
id = "config"
label = "Config file"
type = "path"
option = ["--config"]
path = { kind = "file", role = "input" }
sources = ["help"]
[[commands.field]]
id = "user_data_dir"
label = "User data directory"
type = "path"
option = ["--user-data-dir"]
path = { kind = "directory", role = "input" }
sources = ["help"]
[[commands.field]]
id = "extensions_dir"
label = "Extensions directory"
type = "path"
option = ["--extensions-dir"]
path = { kind = "directory", role = "input" }
sources = ["help"]
[[commands.field]]
id = "disable_telemetry"
label = "Disable telemetry"
type = "boolean"
option = ["--disable-telemetry"]
sources = ["help"]
[[commands.field]]
id = "open"
label = "Open in browser"
type = "boolean"
option = ["--open"]
sources = ["help"]
[[commands.field]]
id = "log"
label = "Log level"
type = "enum"
option = ["--log"]
choices = [{ value = "trace", label = "trace" }, { value = "debug", label = "debug" }, { value = "info", label = "info" }, { value = "warn", label = "warn" }, { value = "error", label = "error" }]
sources = ["help"]
[[commands.field]]
id = "install_extension"
label = "Install extension"
description = "publisher.name, optionally @version, or a .vsix path."
type = "string"
option = ["--install-extension"]
multiple = true
sources = ["help"]
[[commands.field]]
id = "uninstall_extension"
label = "Uninstall extension"
type = "string"
option = ["--uninstall-extension"]
multiple = true
sources = ["help"]
[[commands.field]]
id = "list_extensions"
label = "List extensions"
type = "boolean"
option = ["--list-extensions"]
sources = ["help"]
[[commands.field]]
id = "force"
label = "Skip install prompts"
type = "boolean"
option = ["--force"]
sources = ["help"]
[[commands.task]]
id = "serve"
label = "Serve a folder"
fields = ["folder", "bind_addr", "auth", "disable_telemetry"]
required = []
[[commands.task]]
id = "install"
label = "Install an extension"
fields = ["install_extension", "force"]
required = ["install_extension"]
[[commands.task]]
id = "list"
label = "List extensions"
set = { list_extensions = [true] }
lock = ["list_extensions"]
fields = ["list_extensions"]
required = []
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["folder", "bind_addr", "auth", "open"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["config", "user_data_dir", "extensions_dir", "disable_telemetry", "log", "install_extension", "uninstall_extension", "list_extensions", "force"]