-
Notifications
You must be signed in to change notification settings - Fork 4
CLI Config
Every preference the Edith UI writes is a key in the same defaults the app
reads, and ed config is that surface from the command line: 214 settings in 25
groups, each with a type, a default, a scope and a one-line summary. Reach for
it when you want to know what a switch in Settings is actually called, flip one
without opening the window, or move a whole setup to another Mac.
Nothing here needs Edith to be running. A write goes straight into the defaults
and then posts the same settingsChanged notification the app posts to itself,
so a running Edith picks the change up immediately and a closed one sees it the
next time it launches.
| Command | What it does |
|---|---|
ed config ls |
List settings with their group, type and current value |
ed config get |
Print one setting's value and nothing else |
ed config set |
Validate a value and write it |
ed config unset |
Drop the stored value so the default applies again |
ed config describe |
Explain one setting: type, scope, allowed values, default, current value |
ed config export |
Print the settings you have changed as one JSON document |
ed config import |
Apply a JSON document of settings |
ls is the default subcommand, so a bare ed config lists everything, and
ed config list is an accepted spelling of ls.
ed config lsed config geted config seted config unseted config describeed config exported config import
Every key ed config knows, in the order ed config ls prints them. The
catalogue is compiled into the CLI, so this is the whole surface: a key that is
not here cannot be set, and import skips it.
-
Type is how a value is parsed and stored.
csvis one comma separated string,stringListis a real array, andmapis a nested object that only the app can write. -
Default is the value the setting reports when nothing has been stored.
nonemeans it reads as blank in the table andnullin--jsonuntil something writes it. -
Scope is which defaults domain holds the value.
sharedis thecom.pulkit.edith.sharedsuite that the app, its menu bar helper andedall read, so a write there reaches Edith.standardis whichever process's own domain is reading, which foredised, not the app: those 15 keys are the ones to read through their own command instead. -
read only marks the 23 keys the app owns and maintains.
edreports them and refuses to write them, exit 1.
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
appearance |
string: system, light, dark
|
system |
shared | Window and panel appearance. |
theme |
string | default |
shared | Accent palette name. |
lastPaletteTheme |
string | none | shared | Palette the theme picker restores when a custom accent is cleared. |
showDockIcon |
bool | false |
shared | Show Edith in the Dock as well as the menu bar. |
creditHidden |
bool | false |
shared | Hide the credit line at the bottom of the panel. |
homeClockZones |
csv | none | shared | Comma separated time zone identifiers shown on the Home clocks. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
extensionsExpand |
string | none | shared | Extension card the Extensions page scrolls to and opens next. |
settingsSection |
string | none | shared | Settings section a deep link opens on. |
mainWindowZoom |
number | 1 |
shared | Main window zoom factor. |
onboardingCompleted |
bool | false |
shared | Whether the welcome tour has been finished or skipped. |
EdithMainWindowFullScreen |
bool | false |
standard | Whether the main window opens in full screen. |
hotKeyCode |
int | 14 |
shared | Virtual key code of the global panel shortcut. |
hotKeyMods |
int | 2304 |
shared | Carbon modifier mask of the global panel shortcut. |
hotKeyLabel |
string | none | shared | Printable label for the global panel shortcut. |
tab |
string | usage |
standard | Panel tab shown on open. |
tabOrder |
csv | none | shared | Comma separated panel tab order. |
mainWindowSection |
string | none | shared | Section the main window opens on. |
settingsTab |
string | none | shared | Settings tab shown on open. |
mainSidebarOpen |
bool | true |
shared | Whether the main window sidebar starts open. |
mainSidebarWidth |
number | none | shared | Main window sidebar width in points. |
repoPath |
string | none | shared | Development repository root used for usage data and music. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
tabUsageEnabled |
bool | true |
shared | Agent Usage extension: Claude and Codex limits, stats and alerts. |
usageMachines |
stringList | none | shared | Ids of the machines whose agent usage is collected over SSH. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
claudeLimitsEnabled |
bool | true |
shared | Track Claude rate limits. |
codexLimitsEnabled |
bool | true |
shared | Track Codex rate limits. |
limitsProvider |
string: claude, codex
|
claude |
shared | Provider shown first in the limits UI. |
warnPercent |
int | 60 |
shared | Percentage at which a limit turns amber. |
critPercent |
int | 85 |
shared | Percentage at which a limit turns red. |
pacingMargin |
number | 10 |
shared | Percentage points ahead of pace before pacing alerts fire. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
limitsInMenuBar |
bool | true |
shared | Show session and weekly percentages in the menu bar. |
menuBarClaudeWindows |
string | session,week,fable |
shared | Claude windows shown in the menu bar, comma-separated (session, week, fable). |
menuBarCodexWindows |
string | session,week |
shared | Codex windows shown in the menu bar, comma-separated (session, week). |
menuBarLimitsStyle |
string: stacked, tagged, slash
|
stacked |
shared | Layout of the menu bar limits readout. |
menuBarColorMode |
string: auto, white, custom
|
auto |
shared | How the menu bar readout is tinted. |
smartColor |
bool | none | shared | Tint the menu bar readout by a time-aware risk model. |
menuBarSubColorHex |
string | none | shared | Hex colour of the menu bar subtitle text. |
menuBarLowColorHex |
string | none | shared | Hex colour used below the warning threshold. |
menuBarMidColorHex |
string | none | shared | Hex colour used between the warning and critical thresholds. |
menuBarHighColorHex |
string | none | shared | Hex colour used above the critical threshold. |
menuBarStatsColorHex |
string | none | shared | Hex colour of the CPU and memory menu bar readout. |
menuBarSystemStats |
bool | false |
shared | CPU and memory readout as a menu bar item. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
notifSessionLevel |
int | 0 |
standard, read only | Session threshold the last alert fired at. |
notifWeeklyLevel |
int | 0 |
standard, read only | Weekly threshold the last alert fired at. |
notifSessionPacing |
string | none | standard, read only | Session pacing zone the last alert fired for. |
notifWeeklyPacing |
string | none | standard, read only | Weekly pacing zone the last alert fired for. |
notifyMaster |
bool | false |
shared | Master switch for every usage notification. |
notifyTrackSession |
bool | none | shared | Alert when the session limit crosses a threshold. |
notifyTrackWeekly |
bool | none | shared | Alert when the weekly limit crosses a threshold. |
notifyRecovery |
bool | none | shared | Alert when usage falls back into the green. |
notifyPacingWarning |
bool | none | shared | Alert when spend runs ahead of pace. |
notifyPacingHot |
bool | none | shared | Alert when spend is burning far ahead of pace. |
notifyReminderSession |
bool | none | shared | Remind before the session window resets. |
notifyReminderSessionOffsetMin |
int | 15 |
shared | Minutes before the session reset to remind. |
notifyReminderWeekly |
bool | none | shared | Remind before the weekly window resets. |
notifyReminderWeeklyOffsetMin |
int | 60 |
shared | Minutes before the weekly reset to remind. |
notifyTokenExpired |
bool | none | shared | Alert when a provider token expires. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
budgetEnabled |
bool | false |
shared | Track a spend budget. |
budgetMode |
string: cap, pace
|
cap |
shared | Budget comparison mode. |
budgetKind |
string: session, weekly
|
session |
shared | Window the budget applies to. |
budgetCapPercent |
number | 50 |
shared | Budget cap as a percentage of the limit. |
budgetDeadline |
number | 0 |
shared | Unix timestamp the budget is paced towards. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
dashPaths |
string | none | shared | Folder scope for the dashboard charts. |
dashRange |
string | all |
shared | Dashboard date range. |
dashSources |
csv | none | shared | Comma separated usage sources included in the dashboard. |
dashKnownSources |
csv | none | shared | Sources seen so far, used to auto-select newly discovered ones. |
dashSourceSelectionVersion |
int | none | shared | Schema version of the stored source selection. |
dashModels |
string | none | shared | Model filter for the dashboard charts. |
dashBillingDay |
int | 26 |
shared | Day of month the billing cycle starts on. |
dashSort |
string | cost |
shared | Model table sort column. |
dashSortAsc |
bool | false |
shared | Sort the model table ascending. |
dashHeatMetric |
string: tokens, cost
|
tokens |
shared | Metric the activity heatmap colours by. |
projSort |
string | cost |
shared | Project drilldown sort column. |
projSortAsc |
bool | false |
shared | Sort the project drilldown ascending. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
machinesTab |
string: overview, processes, docker, terminal, tools
|
overview |
shared | Machine detail tab shown on open. |
machinesSelection |
string | none | shared | Identifier of the machine the detail view opens on. |
machinesMode |
string: fleet, workspace, machine
|
fleet |
shared | Machines page view shown on open. |
dockerLogWrap |
bool | true |
shared | Wrap long lines in the Docker log viewer. |
dockerLogTimestamps |
bool | false |
shared | Show timestamps in the Docker log viewer. |
dockerLogFontSize |
number | 11 |
shared | Text size in the Docker log viewer. |
tabMachinesEnabled |
bool | false |
shared | Machines extension: other computers over SSH. |
machinesAutoConnect |
bool | none | shared | Connect to machines automatically when the app starts. |
machinesNotifyDown |
bool | none | shared | Notify when a machine stops responding. |
machinesNotifyDiskFull |
bool | none | shared | Notify when a machine's disk crosses the threshold, or a filesystem stops responding. |
machinesDiskThreshold |
number | 90 |
shared | Disk usage percentage that triggers the disk alert. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
tabHerdrEnabled |
bool | false |
shared | Herdr extension: live sessions on this Mac and SSH machines. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
tabCompanionEnabled |
bool | false |
shared | Show the Companion page. |
companionEndpoint |
string | http://127.0.0.1:4820 |
shared | Companion API base URL the app and CLI talk to. |
companionTab |
string: chat, capture, desk, library, mind, setup, settings
|
chat |
shared | Companion screen shown on open. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
finderViewMode |
string: icon, list
|
list |
shared | Remote file browser layout. |
finderSortKey |
string: name, size, modified, kind
|
name |
shared | Remote file browser sort column. |
finderSortAscending |
bool | true |
shared | Sort the remote file browser ascending. |
finderShowHidden |
bool | false |
shared | Show dotfiles in the remote file browser. |
finderIconSize |
number | none | shared | Icon size in the remote file browser. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
SUEnableAutomaticChecks |
bool | true |
standard | Check for updates on a schedule. |
SUScheduledCheckInterval |
number | 86400 |
standard | Seconds between scheduled update checks. |
SUAutomaticallyUpdate |
bool | true |
standard | Download and install updates automatically. |
tabSystemEnabled |
bool | true |
shared | System extension: running apps, prevent sleep and the cleaning lock. |
preventSleep |
bool | false |
shared | Keep the Mac awake (Keep Awake). |
lidAwakeEnabled |
bool | false |
shared | Enable the Lid Awake extension. |
lidAwakeRestoreOnQuit |
bool | true |
shared | Restore normal lid-close sleep when Edith quits. |
lidAwakeSession |
string: indefinite, fifteenMinutes, thirtyMinutes, oneHour, twoHours, untilLidReopens
|
indefinite |
shared | Session used when Lid Awake starts. |
lidAwakeBatteryThreshold |
int | 0 |
shared | Battery percentage below which Lid Awake pauses; 0 disables it. |
lidAwakeActive |
bool, read only | false |
shared | Whether Lid Awake is currently preventing lid-close sleep. |
systemAppsSort |
string | memory |
shared | Running apps sort column. |
systemAppsSortAsc |
bool | false |
shared | Sort running apps ascending. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
cleanerSelectedDrives |
stringList | none | shared | Volumes the disk cleaner scans. |
cleanerCustomFolders |
stringList | none | shared | Extra folders added to the disk cleaner. |
cleanerCategoryDefaults |
map | none | shared | Per-category cleaner defaults. |
cleanerSelectionOverrides |
map | none | shared | Per-path cleaner selection overrides. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
musicFolderStale |
bool | false |
shared, read only | Whether the stored music folder has gone missing. |
musicCrossfadeEnabled |
bool | true |
shared | Fade between tracks when one ends. |
musicCrossfadeSeconds |
number | 2 |
shared | Seconds the crossfade between tracks lasts. |
musicLastTrack |
string | none | standard, read only | Relative path of the track playback resumes from. |
musicLastPosition |
number | 0 |
standard, read only | Seconds into the track playback resumes from. |
musicWasPlaying |
bool | false |
standard, read only | Whether playback was running when the app last quit. |
tabMusicEnabled |
bool | false |
shared | Music extension: local library playback with media keys. |
musicVolume |
number | 0.7 |
standard | Player volume from 0 to 1. |
musicLooping |
bool | false |
standard | Repeat the current track. |
musicGridView |
bool | false |
shared | Show the library as a grid. |
musicFolderPath |
string | none | shared | Folder the music library plays from. |
musicShuffling |
bool | false |
standard | Play the folder in a random order. |
musicFavourites |
stringList | none | shared | Relative paths of favourited tracks. |
musicDownloadKind |
string: audio, video
|
audio |
shared | Default format for downloads. |
musicBackup |
bool | none | shared | Include the music folder in the iCloud backup. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
tabCalendarEnabled |
bool | false |
shared | Calendar extension: your schedule in the panel and the app. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
clipboardEnabled |
bool | false |
shared | Clipboard extension: history with instant paste. |
clipboardHotKeyCode |
int | none | shared | Virtual key code of the clipboard panel shortcut. |
clipboardHotKeyMods |
int | none | shared | Carbon modifier mask of the clipboard panel shortcut. |
clipboardHotKeyLabel |
string | none | shared | Printable label for the clipboard panel shortcut. |
clipboardMaxItems |
int | none | shared | Maximum entries kept in the clipboard history. |
clipboardMaxItemBytes |
int | none | shared | Largest single clipboard entry kept, in bytes. |
clipboardMaxAgeDays |
int | none | shared | Days a clipboard entry is kept before it is pruned. |
clipboardIgnoredApps |
csv | none | shared | Comma separated bundle identifiers never captured. |
clipboardAutoPaste |
bool | none | shared | Paste straight into the frontmost app on pick. |
clipboardPastePlainText |
bool | none | shared | Strip formatting when pasting. |
clipboardCheckInterval |
number | 1 |
shared | Seconds between pasteboard polls. |
clipboardPopupAt |
string: cursor, statusItem, window, center, lastPosition
|
cursor |
shared | Where the clipboard panel opens. |
clipboardPinTo |
string: top, bottom
|
top |
shared | Which edge the clipboard panel grows from. |
clipboardShowFooter |
bool | none | shared | Show the hint footer in the clipboard panel. |
clipboardSaveFiles |
bool | none | shared | Capture copied files. |
clipboardSaveImages |
bool | none | shared | Capture copied images. |
clipboardSaveText |
bool | none | shared | Capture copied text. |
clipboardBackup |
bool | none | shared | Include clipboard history in the iCloud backup. |
clipboardWindowPositionX |
number | none | shared | Last clipboard panel x position. |
clipboardWindowPositionY |
number | none | shared | Last clipboard panel y position. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
notchShelfEnabled |
bool | false |
shared | Notch Shelf extension: file shelf, now playing, camera and alerts. |
notchShelfOpenOnDrag |
bool | none | shared | Open the shelf when a drag reaches the notch. |
notchShelfOpenOnHover |
bool | none | shared | Open the shelf on hover. |
notchShelfRequireOption |
bool | none | shared | Require Option held to open the shelf. |
notchShelfKeepDuration |
string | none | shared | How long shelf items are kept. |
notchShelfRemoveAfterDragOut |
bool | none | shared | Remove an item from the shelf after it is dragged out. |
notchShelfShowOnExternal |
bool | none | shared | Show the shelf on external displays. |
notchShelfHaptics |
bool | none | shared | Haptic feedback on the shelf. |
notchShelfShowMusic |
bool | none | shared | Show now playing controls in the shelf. |
notchAlertsEnabled |
bool | none | shared | Show alerts around the notch. |
notchAlertAudio |
bool | none | shared | Alert on audio device changes. |
notchAlertPower |
bool | none | shared | Alert on power source changes. |
notchAlertBattery |
bool | none | shared | Alert on battery level changes. |
notchAlertBluetooth |
bool | none | shared | Alert on Bluetooth connections. |
notchAudioMixerEnabled |
bool | none | shared | Per-app audio mixer in the notch shelf. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
focusDimActive |
bool | false |
shared | Focus dim on right now. |
focusDimEnabled |
bool | false |
shared | Focus Dim extension: dim everything behind the active app. |
focusDimIntensity |
number | 0.5 |
shared | Dim strength from 0 to 1. |
focusDimAnimationDuration |
number | none | shared | Seconds the dim takes to fade. |
focusDimOtherDisplaysMode |
string: perScreenFront, dimUnfocused
|
perScreenFront |
shared | How other displays are treated. |
focusDimHotKeyCode |
int | none | shared | Virtual key code of the focus dim shortcut. |
focusDimHotKeyMods |
int | none | shared | Carbon modifier mask of the focus dim shortcut. |
focusDimHotKeyLabel |
string | none | shared | Printable label for the focus dim shortcut. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
presenterAutoActive |
bool | false |
shared, read only | A share is being detected right now. |
presenterAutoPaused |
bool | false |
shared, read only | Auto presenter mode is paused until the current share ends. |
presenterAutoReason |
string | none | shared, read only | Why auto presenter mode turned on. |
presenterEnabled |
bool | false |
shared | Presenter extension: blur sensitive numbers while sharing. |
presenterMode |
bool | false |
shared | Presenter mode on right now. |
presenterAutoEnabled |
bool | none | shared | Turn presenter mode on automatically when a share is detected. |
presenterDetectRecording |
bool | none | shared | Treat screen recording as a share. |
presenterDetectScreenSharing |
bool | none | shared | Treat screen sharing as a share. |
presenterDetectMirroring |
bool | none | shared | Treat display mirroring as a share. |
presenterHideMenuBarNumbers |
bool | none | shared | Hide menu bar percentages while presenting. |
presenterBlurMoney |
bool | none | shared | Blur spend figures. |
presenterBlurUsage |
bool | none | shared | Blur usage percentages. |
presenterBlurMusic |
bool | none | shared | Blur track names. |
presenterBlurCalendar |
bool | none | shared | Blur calendar entries. |
presenterBlurAgents |
bool | none | shared | Hide live Herdr titles and blur attached terminals. |
presenterHotKeyCode |
int | none | shared | Virtual key code of the presenter shortcut. |
presenterHotKeyMods |
int | none | shared | Carbon modifier mask of the presenter shortcut. |
presenterHotKeyLabel |
string | none | shared | Printable label for the presenter shortcut. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
colorPickerEnabled |
bool | false |
shared | Color Picker extension: system loupe on a hotkey. |
colorPickerCopyFormat |
string: hex, rgb, hsl, swiftUI, nsColor
|
hex |
shared | Format the sampled colour is copied in. |
colorPickerProfile |
string: sRGB, displayP3
|
sRGB |
shared | Colour space the loupe samples in. |
colorPickerHistorySize |
int | none | shared | Number of swatches kept in the history. |
colorPickerHotKeyCode |
int | none | shared | Virtual key code of the colour picker shortcut. |
colorPickerHotKeyMods |
int | none | shared | Carbon modifier mask of the colour picker shortcut. |
colorPickerHotKeyLabel |
string | none | shared | Printable label for the colour picker shortcut. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
micMuted |
bool | false |
shared, read only | Microphone muted right now. |
micMuteEnabled |
bool | false |
shared | Mic Mute extension: system-wide microphone kill switch. |
micMuteInMenuBar |
bool | none | shared | Show the mic mute indicator in the menu bar. |
micHotKeyCode |
int | none | shared | Virtual key code of the mic mute shortcut. |
micHotKeyMods |
int | none | shared | Carbon modifier mask of the mic mute shortcut. |
micHotKeyLabel |
string | none | shared | Printable label for the mic mute shortcut. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
icloudBackup |
bool | true |
shared | Master switch for the iCloud backup. |
backupSettings |
bool | none | shared | Back up settings to iCloud. |
backupUsage |
bool | none | shared | Back up usage history to iCloud. |
backupLimits |
bool | none | shared | Back up limit history to iCloud. |
lastBackupAt |
number | none | shared, read only | Unix timestamp of the last settings backup. |
lastMusicBackupAt |
number | none | shared, read only | Unix timestamp of the last music backup. |
lastClipboardBackupAt |
number | none | shared, read only | Unix timestamp of the last clipboard backup. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
permCalendarGranted |
bool | false |
shared, read only | Calendar permission, as last observed by Edith. |
permNotificationsGranted |
bool | false |
shared, read only | Notifications permission, as last observed by Edith. |
permAccessibilityGranted |
bool | false |
shared, read only | Accessibility permission, as last observed by Edith. |
permInputMonitoringGranted |
bool | false |
shared, read only | Input Monitoring permission, as last observed by Edith. |
permFullDiskGranted |
bool | false |
shared, read only | Full Disk Access permission, as last observed by Edith. |
permScreenRecordingGranted |
bool | false |
shared, read only | Screen Recording permission, as last observed by Edith. |
permCameraGranted |
bool | false |
shared, read only | Camera permission, as last observed by Edith. |
permissionsFilter |
string | none | shared | Filter the Permissions page opens with. |
| Key | Type | Default | Scope | What it controls |
|---|---|---|---|---|
completionsAutoRefresh |
bool | true |
shared | Keep the shell completion scripts current when the app starts. |
| Code | What produced it |
|---|---|
| 0 | The command did what it says. An unset of something that was never set, and an import where every key was skipped, both count as success |
| 1 | The write was refused: a read-only key, a value that does not parse as the setting's type, a value outside the allowed list, a map setting, or an import document that is not a JSON object |
| 2 | The command line was wrong: an unknown flag such as ed config export --json, a missing argument, or ed config ls get where a setting prefix was expected |
| 3 | The name does not exist: an unknown key, an unknown --group, a prefix matching no key, or an import file that cannot be read |
Nothing in this group exits 4, because nothing in it needs Edith to be running.
A shared suite, and a per-process one. A shared setting lives in the
com.pulkit.edith.shared defaults suite, which the app, its menu bar helper and
ed all open, so writing one from the command line is the same act as clicking
the switch. A standard setting lives in whatever UserDefaults.standard means
for the process doing the reading, which for ed is ed's own domain rather
than the app's. Those 15 keys are EdithMainWindowFullScreen, tab,
notifSessionLevel, notifWeeklyLevel, notifSessionPacing,
notifWeeklyPacing, SUEnableAutomaticChecks, SUScheduledCheckInterval,
SUAutomaticallyUpdate, musicLastTrack, musicLastPosition,
musicWasPlaying, musicVolume, musicLooping and musicShuffling. Setting
one of them changes what ed sees, not what the app does, so drive the live
ones through the command that owns them: ed music volume 0.4 reaches the
player, ed config set musicVolume 0.4 does not.
Read only means the app writes it. The 23 read-only keys are state the app
maintains and ed reports: the perm*Granted mirror of macOS permission state,
the last*BackupAt timestamps, the four notifSession* and notifWeekly*
records of which alert already fired, musicFolderStale, the musicLast* and
musicWasPlaying resume state, the presenterAuto* share detection,
lidAwakeActive, and micMuted. They show up in ls, get and describe, are
refused by set and unset with exit 1, and are left out of export and
skipped by import.
A missing default is not the same as false. Where the catalogue declares
no default, the setting reads blank in the table and null in --json until
something writes it, which is why most of the notch* and notify* switches
look empty on a fresh install. ed config ls --changed is the honest view of
what has actually been decided.
--changed compares against registered defaults too. A setting counts as
changed when it has a stored value that differs from any default registered at
launch. Four keys are registered that way, icloudBackup,
completionsAutoRefresh, musicCrossfadeEnabled and musicCrossfadeSeconds,
so storing the registered value on one of them leaves it out of --changed and
out of export, which is what you want: it is not a change.
Two settings cannot be written from here at all. cleanerCategoryDefaults
and cleanerSelectionOverrides are nested objects, so set refuses them,
export omits them and import skips them. They are readable: ls, get and
describe print the stored object as compact JSON. ed schema still lists them
as writable objects, so a document that validates against the schema can still
contain a key import will skip.
ed schema is the machine-readable half of this page. It prints a JSON
Schema for the import document: the 191 writable keys as properties,
additionalProperties: false, the enum for each of the 19 keys with an
allowed list, the default where the catalogue declares one, and x-group,
x-scope and x-format annotations. A csv setting is typed as a string with
"x-format": "comma-separated"; a stringList is an array of strings.
Extensions are settings, with better manners. tabUsageEnabled,
tabHerdrEnabled,
tabSystemEnabled, tabMachinesEnabled, tabCompanionEnabled,
menuBarSystemStats, micMuteEnabled, lidAwakeEnabled, tabMusicEnabled,
tabCalendarEnabled, notchShelfEnabled, clipboardEnabled,
focusDimEnabled, presenterEnabled and colorPickerEnabled are the same
switches ed extensions enable and
ed extensions disable flip. Prefer those verbs: they know which macOS
permission the extension needs and say which one is missing, where
ed config set just writes the bool.
Menu bar limit windows are comma-separated selections.
menuBarClaudeWindows accepts session, week and fable, while
menuBarCodexWindows accepts session and week. The menu bar always restores
canonical order, drops unknown names, ignores fable for Codex, and hides a
provider whose stored selection is empty. ed config set validates these as
ordinary strings, so a typo is stored successfully and then ignored by the menu
bar. Unsetting either key restores all windows for that provider. The defaults
are session,week,fable for Claude and session,week for Codex.
Values are matched exactly, keys are matched exactly. An allowed value is
compared case-sensitively, so ed config set appearance Dark exits 1 while
dark works. Booleans are the one exception, where the word is lowercased
first. The ls prefix is case-sensitive as well; only the near-match hint on an
unknown key searches case-insensitively.
Lists are split on commas and trimmed. ed config set musicFavourites "a.mp3, b.mp3" stores two entries with no leading space, an empty value stores
an empty list, and empty items are dropped, so a trailing comma is harmless.
Output is stable enough to diff. ls prints in catalogue order, which is
the order of this page. Every JSON object has its keys sorted, and export
sorts the whole document, so two exports of the same machine differ only where
the settings do.
Completion knows the catalogue. ed config get <TAB> and
ed config set <TAB> offer every key, ed config set limitsProvider <TAB>
offers claude codex, a bool setting offers true false, and
ed config ls <TAB> offers the group names.
-
ed extensionsfor the feature switches and the permissions they need -
ed permissionsfor the real state behind theperm*Grantedmirror -
ed music,ed clipboardanded machinesfor the commands that own the live state these keys only describe -
Getting started for
ed schema,ed guideand shell completion -
Conventions and contracts for the
--jsonand exit code rules every group shares - All command groups
Auto-generated from docs/, edit the docs in the repo, not the wiki.
CLI reference
Companion
- Deploy
- Concepts
- Concepts Memory
- Concepts Ingestion
- Concepts Search
- Concepts Chat
- Concepts Learning
- Concepts Brain
- Concepts Friend
- Hosts
- Stack
- Status
- Doctor
- Search
- Index
- Ingest
- Episodes
- Sync
- Observations
- Reflect
- Beliefs
- Ask
- Extract
- Claims
- Corroborate
- Runs
- Chat
- Conversations
- Forget
- Export
- Import
- Erase
- Wipe
- Episode
- Nightly
- Reason
- Personas
- Council
- Lenses
- Core
- Why
- Hypotheses
- Predictions
- Commitments
- Discrepancies
- Calibration
- Inquire
- Entities
- Eval
- Standup
- Machines
- Baselines
- Connectors
- Facts
- Correct
- Weekly
- Db
Guides