Skip to content

Configuration Reference

tilde.config.json (stored at ~/.tilde/tilde.config.json) is the single source of truth for your developer environment. Every key is documented below.

The file is created and maintained by the tilde interactive wizard. You can also edit it directly — tilde validates the schema on startup.


Type: string
Required: No
Default: "https://thingstead.io/tilde/config-schema/v1.json"
Description: JSON Schema URL for editor validation and autocomplete. Recommended.
Since: 0.1.0

{
"$schema": "https://thingstead.io/tilde/config-schema/v1.json"
}

Type: number (integer)
Required: Yes
Valid values: 1 (current)
Default: 1
Description: Internal schema version. Increment when breaking changes are made to the config format. tilde uses this for automatic migrations.
Since: 0.1.0

{
"schemaVersion": 1
}

Type: string
Required: Yes
Valid values: "macos"
Default: "macos" (auto-detected)
Description: Target operating system. Currently only "macos" is supported. This field is set automatically by the wizard and is used to apply OS-specific defaults.
Since: 0.1.0

{
"os": "macos"
}

Type: string
Required: Yes
Valid values: "zsh" | "bash" | "fish"
Default: None (selected during wizard)
Description: Your primary shell. tilde writes shell configuration (aliases, exports, hooks) to the appropriate profile file for the selected shell.
Since: 0.1.0

{
"shell": "zsh"
}

Type: string
Required: Yes
Valid values: "homebrew"
Default: "homebrew"
Description: The package manager used to install CLI tools. Only Homebrew is supported on macOS. Future versions may support MacPorts or Nix.
Since: 0.1.0

{
"packageManager": "homebrew"
}

Type: array of objects
Required: No
Default: []
Description: List of version managers to install and configure. Each entry installs the named version manager and integrates it with your shell.

Each item:

FieldTypeValid values
namestring"vfox" | "nvm" | "pyenv" | "sdkman"

Since: 0.1.0

{
"versionManagers": [
{ "name": "vfox" }
]
}

Type: array of objects
Required: No
Default: []
Description: Programming languages to install. Each entry specifies the language name, desired version, and which version manager to use. The manager value must reference a name listed in versionManagers.

Each item:

FieldTypeDescription
namestringLanguage name (e.g., "nodejs", "python")
versionstringVersion string (e.g., "20", "3.12.4")
managerstringVersion manager name — must match a versionManagers[].name

Since: 0.1.0

{
"languages": [
{ "name": "nodejs", "version": "20", "manager": "vfox" },
{ "name": "python", "version": "3.12.4", "manager": "vfox" }
]
}

Type: string
Required: Yes
Default: None (set during wizard, e.g. "~/dev")
Description: Absolute path (or ~/-prefixed path) to your local workspace root. tilde creates this directory and organizes per-context project folders inside it.
Since: 0.1.0

{
"workspaceRoot": "~/dev"
}

Type: string
Required: Yes
Default: None
Description: Absolute path or ~/-prefixed path to your dotfiles repository. Must start with / or ~/. tilde reads dotfile templates from this directory and writes rendered configs to the appropriate system paths.
Since: 0.1.0

{
"dotfilesRepo": "~/dev/personal/dotfiles"
}

Type: array of objects
Required: Yes (minimum 1)
Default: None
Description: Developer contexts — one per identity (e.g., personal, work). Each context maps a workspace path to a git identity, GitHub account, and auth method. Context labels must be unique.

Each item:

FieldTypeRequiredDescription
labelstringYesUnique display name (e.g., "personal", "work")
pathstringYesDirectory path for this context’s projects
git.namestringYesGit commit author name
git.emailstringYesGit commit author email
github.usernamestringNoGitHub username for this context
authMethodstringYes"gh-cli" | "https" | "ssh"
envVarsarrayNoEnvironment variable references (backend refs, not secrets)
vscodeProfilestringNoVS Code profile name to activate in this directory
isDefaultbooleanNoMark as the default context

Since: 0.1.0

{
"contexts": [
{
"label": "personal",
"path": "~/dev/personal",
"git": {
"name": "Jane Doe",
"email": "[email protected]"
},
"github": { "username": "janedoe" },
"authMethod": "ssh",
"isDefault": true
}
]
}

Type: array of strings
Required: No
Default: []
Description: Additional CLI tools to install via Homebrew. Each entry is a valid Homebrew formula or cask name.
Since: 0.1.0

{
"tools": ["docker", "terraform", "kubectl", "helm"]
}

Type: object
Required: Yes
Description: Feature flags controlling which configuration domains tilde manages. Set to false to opt out of a domain entirely.

FieldTypeDescription
gitbooleanManage global .gitconfig
vscodebooleanManage VS Code settings and profiles
aliasesbooleanWrite shell aliases to profile
osDefaultsbooleanApply macOS system defaults
direnvbooleanInstall and configure direnv

Since: 0.1.0

{
"configurations": {
"git": true,
"vscode": true,
"aliases": true,
"osDefaults": true,
"direnv": true
}
}

Type: array of objects
Required: No
Default: []
Description: Third-party service accounts (beyond GitHub) to configure. Each entry links a service identifier to an optional secrets backend reference.

Each item:

FieldTypeRequiredDescription
servicestringYesService name (e.g., "npm", "vercel")
identifierstringYesUsername or account ID
secretRefstringNoReference key in your secrets backend

Since: 0.1.0

{
"accounts": [
{
"service": "npm",
"identifier": "janedoe",
"secretRef": "NPM_TOKEN"
}
]
}

Type: string
Required: Yes
Valid values: "1password" | "keychain" | "env-only"
Default: None (selected during wizard)
Description: The backend used to resolve secret references in contexts[].envVars and accounts[].secretRef.

ValueDescription
"1password"1Password CLI (op) — recommended for macOS
"keychain"macOS Keychain — no third-party dependency
"env-only"Plain environment variables — no secrets manager

Since: 0.1.0

{
"secretsBackend": "1password"
}

{
"$schema": "https://thingstead.io/tilde/config-schema/v1.json",
"schemaVersion": 1,
"os": "macos",
"shell": "zsh",
"packageManager": "homebrew",
"versionManagers": [
{ "name": "vfox" }
],
"languages": [
{ "name": "nodejs", "version": "20", "manager": "vfox" },
{ "name": "python", "version": "3.12.4", "manager": "vfox" }
],
"workspaceRoot": "~/dev",
"dotfilesRepo": "~/dev/personal/dotfiles",
"contexts": [
{
"label": "personal",
"path": "~/dev/personal",
"git": { "name": "Jane Doe", "email": "[email protected]" },
"github": { "username": "janedoe" },
"authMethod": "ssh",
"isDefault": true
}
],
"tools": ["docker", "terraform"],
"configurations": {
"git": true,
"vscode": true,
"aliases": true,
"osDefaults": true,
"direnv": true
},
"accounts": [
{ "service": "npm", "identifier": "janedoe", "secretRef": "NPM_TOKEN" }
],
"secretsBackend": "1password"
}