Skip to main content

Reference

Filesystem Footprint — Platform Paths

OS-specific resolution for every per-bundle, OS-managed, and temp-directory path Land touches on macOS, Linux, and Windows.

Platform Paths 🖥️

OS-specific resolution for every per-bundle, OS-managed, and temp-directory path Land touches.


Resolution Rule 📐

All per-bundle paths flow through Tauri’s PathResolver, which delegates to the dirs crate. Three helpers do almost all the work:

Helper🍎 macOS🐧 Linux🪟 Windows
app_data_dir()$HOME/Library/Application Support/<id>/$XDG_DATA_HOME/<id>/ or $HOME/.local/share/<id>/%APPDATA%\<id>\ (C:\Users\<user>\AppData\Roaming\<id>\)
app_config_dir()$HOME/Library/Application Support/<id>/$XDG_CONFIG_HOME/<id>/ or $HOME/.config/<id>/%APPDATA%\<id>\
app_cache_dir()$HOME/Library/Caches/<id>/$XDG_CACHE_HOME/<id>/ or $HOME/.cache/<id>/%LOCALAPPDATA%\<id>\ (C:\Users\<user>\AppData\Local\<id>\)
app_log_dir()$HOME/Library/Logs/<id>/$XDG_DATA_HOME/<id>/logs/%LOCALAPPDATA%\<id>\logs\
temp_dir() (via std::env)$TMPDIR (/var/folders/<XX>/T/)/tmp/%TEMP% (C:\Users\<user>\AppData\Local\Temp\)

<id> is whichever per-profile Tauri bundle identifier the build emits.

macOS folds app_data_dir and app_config_dir into the same location; Linux and Windows split them.


## 🍎 macOS Layout

Status: 🟢 fully supported (primary development target).

Per-bundle paths (Tauri-resolved)

PathHelperProducerPurpose
~/Library/Application Support/<bundle>/machine-id.txtapp_data_dirProcessManagement/InitializationData.rs::get_or_generate_machine_idStable per-install UUID surfaced as vscode.env.machineId. Generated once with Uuid::new_v4(), persisted.
~/Library/Application Support/<bundle>/User/settings.jsonapp_data_dirAppLifecycle.rs:441 (seeds {})User settings.
~/Library/Application Support/<bundle>/User/keybindings.jsonapp_data_dirAppLifecycle.rs:442 (seeds [])Keybinding overrides.
~/Library/Application Support/<bundle>/User/tasks.jsonapp_data_dirAppLifecycle.rs:443 (seeds {})Tasks definitions.
~/Library/Application Support/<bundle>/User/extensions.jsonapp_data_dirAppLifecycle.rs:444 (seeds [])Extension recommendations.
~/Library/Application Support/<bundle>/User/mcp.jsonapp_data_dirAppLifecycle.rs:445 (seeds {})MCP server registry.
~/Library/Application Support/<bundle>/User/globalStorage/app_data_dirWorkbench + Environment/StorageProvider.rsPer-extension Memento-backed globalState (JSON-per-extension).
~/Library/Application Support/<bundle>/User/workspaceStorage/app_data_dirWorkbenchPer-workspace state.
~/Library/Application Support/<bundle>/User/profiles/...app_data_dirWorkbench profile systemProfile-scoped settings overlay.
~/Library/Application Support/<bundle>/User/snippets/app_data_dirWorkbenchUser-defined snippets.
~/Library/Application Support/<bundle>/User/prompts/app_data_dirChat surfacesSaved chat prompts.
~/Library/Application Support/<bundle>/CachedConfigurations/...app_data_dirWorkbench configuration systemComputed defaults overlay cache.
~/Library/Application Support/<bundle>/logs/<ts>/Mountain.dev.logapp_data_dirIPC/DevLog/WriteToFile.rs::ResolveLogDirectoryPer-session timestamped Rust-side log. Not pruned today.
~/Library/Application Support/<bundle>/logs/window1/output_*app_data_dirWorkbench LogServicePer-window workbench-side log files. Seeded directory is logs/window1/.
~/Library/Caches/<bundle>/app_cache_dirTauri runtime + webview asset caches200+ MB after a few sessions. Not pruned by the app.
~/Library/Logs/<bundle>/app_log_dirTauri default (rarely used)Empty in normal operation; main logs land under app_data_dir.

OS-managed paths (created by macOS / WKWebView, not by Land code)

PathOwnerPurpose
~/Library/Preferences/<bundle>.plistmacOS NSUserDefaultsWindow position, recent docs, Tauri-set defaults. Cocoa-managed binary plist.
~/Library/WebKit/<bundle>/WKWebViewWebview localStorage, IndexedDB, ServiceWorker caches. 50 - 400 MB typical.
~/Library/HTTPStorages/<bundle>/URLSessionHTTP cookies and credentials when URLSession is used. Empty if the webview handles all networking.
~/Library/Saved Application State/<bundle>.savedState/AppKitWindow restoration data when NSQuitAlwaysKeepsWindows is enabled.
~/Library/Logs/DiagnosticReports/<bundle>*.crashmacOS diagnostic engineCrash reports (system-managed, written on crash only).

Temp-dir writes (macOS)

std::env::temp_dir() resolves to $TMPDIR, a per-user /var/folders/<XX>/T/ directory.

PathProducerLifetime
$TMPDIR/land-zsh-integration-<pid>/.zshrcEnvironment/Terminal/ShellIntegration.rs:98Per integrated-terminal launch. Process-scoped name, but the file lingers after the shell exits. macOS sweeps $TMPDIR infrequently; user accumulates one per launch.
$TMPDIR/vine_fallback.protoCocoon/Services/Mountain/Client/Service.ts:556, gRPC/Server/Service.ts:1663Per gRPC client init when the bundled proto resource is missing. Overwritten on each init; not deleted.
$TMPDIR/land-editor-logs/<ts>/IPC/DevLog/WriteToFile.rs:84Fallback only. Used when AppDataPrefix::Fn() cannot resolve a bundle identifier. Normally empty.

## 🐧 Linux Layout

Status: 🟡 partial (Tauri’s path resolver works; webview-storage paths differ from WKWebView equivalents).

Per-bundle paths (Tauri-resolved)

<XDG_*> defaults respected; otherwise dirs falls back to the freedesktop.org base-directory spec.

PathHelperProducerPurpose
~/.local/share/<bundle>/machine-id.txtapp_data_dirInitializationData.rsSame content as macOS, different location.
~/.local/share/<bundle>/User/{settings,keybindings,tasks,extensions,mcp}.jsonapp_data_dirAppLifecycle.rsWorkbench userdata defaults.
~/.local/share/<bundle>/User/globalStorage/app_data_dirWorkbench + StorageProvider.rsPer-extension Memento storage.
~/.local/share/<bundle>/logs/<ts>/Mountain.dev.logapp_data_dirIPC/DevLog/WriteToFile.rsPer-session Rust-side log. Same naming as macOS.
~/.config/<bundle>/app_config_dirEnvironment/ConfigurationProvider/*Settings + keybindings flow through this resolver. May coexist with app_data_dir content depending on caller.
~/.cache/<bundle>/app_cache_dirTauri runtime + webview asset cachesWebview cache equivalent.

OS-managed paths (Linux)

PathOwnerPurpose
~/.local/share/<bundle>/WebKitGTK (Tauri default)Webview localStorage / IndexedDB. Layout matches app_data_dir and lives inside the same per-bundle tree.
~/.config/<bundle>/dconf (if used)GNOME settings backendTauri does not write here today, but some Linux desktops persist window state via dconf.
Crash reportssystemd-coredump / apportVary by distro (~/.cache/abrt/, /var/lib/systemd/coredump/, …). Not Land-controlled.

Temp-dir writes (Linux)

std::env::temp_dir() resolves to /tmp/ (unless $TMPDIR overrides).

PathProducerNote
/tmp/land-zsh-integration-<pid>/.zshrcEnvironment/Terminal/ShellIntegration.rssystemd-tmpfiles sweeps /tmp on boot, so leakage is less severe than macOS.
/tmp/vine_fallback.protoCocoon/Services/Mountain/Client/Service.tsSame fallback semantics as macOS.
/tmp/land-editor-logs/<ts>/IPC/DevLog/WriteToFile.rsSame fallback semantics as macOS.

## 🪟 Windows Layout

Status: 🔴 pending — dirs crate paths and Tauri PathResolver are documented here for completeness, but the editor has not been smoke-tested on Windows. Treat the table as a forward-looking reference; expect minor drift when the platform target lands.

Per-bundle paths (Tauri-resolved)

PathHelperNotes
%APPDATA%\<bundle>\machine-id.txtapp_data_dirdirs resolves to FOLDERID_RoamingAppDataC:\Users\<user>\AppData\Roaming\<bundle>\.
%APPDATA%\<bundle>\User\{settings,keybindings,tasks,extensions,mcp}.jsonapp_data_dirSame JSON shape as macOS / Linux.
%APPDATA%\<bundle>\User\globalStorage\app_data_dir
%APPDATA%\<bundle>\logs\<ts>\Mountain.dev.logapp_data_dirPer-session Rust-side log.
%LOCALAPPDATA%\<bundle>\app_cache_dirFOLDERID_LocalAppDataC:\Users\<user>\AppData\Local\<bundle>\. Tauri/webview caches.
%LOCALAPPDATA%\<bundle>\logs\app_log_dirTauri default (rarely used).

OS-managed paths (Windows)

PathOwnerPurpose
%LOCALAPPDATA%\<bundle>\EBWebView\WebView2Edge WebView2 storage (cookies, IndexedDB, localStorage, ServiceWorker caches). Equivalent of Library/WebKit.
HKCU\Software\<bundle>\Windows RegistryTauri / Cocoa-equivalent default storage. App may write window state here.
%LOCALAPPDATA%\CrashDumps\<bundle>*.dmpWindows Error ReportingMinidump destination on crash.

Temp-dir writes (Windows)

std::env::temp_dir() resolves to %TEMP%C:\Users\<user>\AppData\Local\Temp\.

PathProducerNote
%TEMP%\land-zsh-integration-<pid>\.zshrcEnvironment/Terminal/ShellIntegration.rsNo-op on Windows in practice — the zsh-integration path only triggers when the user opens a zsh shell.
%TEMP%\vine_fallback.protoCocoon/Services/Mountain/Client/Service.tsSame fallback semantics as macOS.
%TEMP%\land-editor-logs\<ts>\IPC/DevLog/WriteToFile.rsSame fallback semantics as macOS.

User-Dotfile Resolution (cross-OS) 🏞️

The ~/.fiddee/ tree resolves the same way on every OS. Summary:

OSResolves to
🍎 macOS/Users/<user>/.fiddee/
🐧 Linux/home/<user>/.fiddee/
🪟 WindowsC:\Users\<user>\.fiddee\

~/.land/extensions/ (legacy fan-out) follows the same convention.


Foreign-Tool Directories Land Creates 🌐

Binary/Main/AppLifecycle.rs:393 pre-creates two directories that belong to other tools, so VS Code’s startup stat probes don’t log errors. Cross-OS:

Path🍎 macOS🐧 Linux🪟 Windows
~/.claude/agents//Users/<user>/.claude/agents//home/<user>/.claude/agents/C:\Users\<user>\.claude\agents\
~/.copilot/agents//Users/<user>/.copilot/agents//home/<user>/.copilot/agents/C:\Users\<user>\.copilot\agents\

Land does not write to either path — only mkdir -p. If the user does not have those tools installed, these dirs nonetheless persist after Land’s first boot.


In-Tree Build Artefacts 🛠️

Cross-OS, not part of user-install footprint:

PathPurpose
Element/Mountain/Target/Rust build output. Hundreds of MB to several GB per profile.
Element/Mountain/Target/debug/extensions.manifest.jsonPreBake cache (built-in extension manifests).
Element/Mountain/Target/Resources/extensions/Bundled built-in extensions copied into the .app’s Resources tree. Read-only.
Element/Mountain/Target/<profile>/.../*.appBuilt bundle. Maintain/Script/SignBundle.sh re-signs in place.
Element/Sky/Target/Astro / Vite build output (workbench + webview assets).
Element/<Other>/Target/Per-Element TypeScript compile output.
Element/Mountain/Cargo.toml.BackupBuild-script residue (Maintain wrappers rewrite + restore; sometimes leaves a diff).

See Also 📚