Smudgy keeps ordinary configuration under your Documents directory:
Documents/smudgy/
Development builds use Documents/smudgy-dev/ so test accounts, servers, maps, and packages do not alter release data. Release candidates use the release directory.
smudgy directory to a dated location.The operating-system credential store is separate. A directory backup does not necessarily include saved profile passwords, account sessions, API keys, or package secrets. Plan to sign in again and re-enter secrets after moving to another computer. When no credential store is available, some secrets use obfuscated fallback files inside the data directory. Those files are copied by a backup and are not encrypted, so protect the backup as you would protect the credentials themselves.
| Path | Purpose |
|---|---|
settings.json | Global appearance, input, logging, map preferences, and update settings. |
map-scopes.json | Which cloud map folders and loose areas belong to which server entries. |
maps/ | The local cache of cloud maps. Pending writes make this worth preserving even though the server is authoritative after sync. |
smudgy.log | Application diagnostics, not MUD session output. |
<server>/ | One directory for each saved server. |
Account metadata may also appear here, while secret tokens normally live in the system keyring.
| Path | Purpose |
|---|---|
server.json | Host, port, TLS, compression, and encoding. |
profiles/<profile>/profile.json | Profile name, description, and commands sent on connect. The protected password value is not stored here. |
aliases/aliases.json | Saved aliases, plus optional file-based alias scripts. |
triggers/triggers.json | Saved triggers, plus optional file-based trigger scripts. |
hotkeys/hotkeys.json | Saved hotkeys, plus optional file-based hotkey scripts. |
packages.json | Folder organization and enabled state for saved automations. |
modules/ | Personal JavaScript and TypeScript modules. |
packages/ | Local package source you own or are developing. |
smudgy.lock.json | Installed package roots, versions, integrity records, consent, trust, and enabled state. |
smudgy.params.json | Non-secret values entered for installed package parameters. |
local/ | Authoritative maps stored only for this server, including promoted session maps. |
logs/ | Readable and optional raw session logs. |
.isolate-storage/ | Persistent private data for sandboxed installed packages. |
Other generated caches and TypeScript support files can be recreated, but copying the whole server directory avoids deciding under pressure which ones matter.
Local maps use a versioned document format. Current authoritative files are stored below:
<server>/local/areas-v2/
When Smudgy first encounters a map from the previous format under local/areas/, it:
local/areas-v1-backup/;local/areas-v2/.
The original areas/ file is not rewritten. If validation, backup creation, conversion, or the final write fails, the old file remains the source Smudgy can retry from. A file from a newer format is left unchanged and reported as requiring a newer client; Smudgy does not attempt to downgrade it.
These migration copies protect the map-format transition, but they are not a substitute for a backup of the complete Smudgy directory. Keep the folders together: copying one JSON document without its surrounding map set can break cross-area relationships.
Close smudgy first. Preserve the current directory under another name, then restore a complete backup rather than mixing arbitrary versions of interdependent JSON files. If only one script is bad, restore that file and its definition together.
Cloud maps may reconcile after sign-in. Local maps under each server's local/ directory do not come from the cloud and must be restored from backup. Restore the complete local/ directory, including its versioned area and migration-backup folders, rather than mixing documents from different snapshots.
The UI validates identifiers, patterns, manifests, and relationships. A text editor does not. Keep the untouched backup, use a JSON-aware editor, and change one thing at a time. A malformed file may be treated as unreadable or cause the corresponding server, profile, or automation set to be skipped.