id = "code-server" name = "code-server" homepage = "https://github.com/coder/code-server" description = "VS Code in the browser." executables = ["code-server"] [dotfiles] # https://github.com/coder/code-server/blob/main/docs/FAQ.md documents the # config file at $XDG_CONFIG_HOME/code-server/config.yaml and user settings # under $XDG_DATA_HOME/code-server. Keep settings and snippets, not extensions, # logs, or heartbeat state. 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 # The documented config example includes password authentication. Lift only # password fields while retaining bind/auth/cert preferences as content. [[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"]