Skip to content

[ Operations / menu-bar ]

Menu bar switch (macOS) ​

A SwiftBar plugin shows the onedot mark in the menu bar — solid while devkit is on, dimmed while it is off. Its menu runs devkit off or devkit on, switches Codex, OpenCode and every registry runtime between auto, on and off, picks the review runtime and the update channel, lists every CLI tool from tools.json with its installed and outdated state, runs devkit doctor in a Terminal window, links the documentation, and names a staged update or missing tools. The switch is optional: devkit does not install SwiftBar, so only people who want it need the app.

Install ​

  1. Install SwiftBar:

    install.shbash
    bash
    brew install swiftbar
  2. Run devkit sync; on a Mac with SwiftBar installed and no folder set, devkit points SwiftBar at ~/.onedot-devkit/swiftbar. That stable directory contains the generated SwiftBar plugin as a regular executable file. Every sync replaces an older managed link or generated file atomically.

    Release archives retain a generated compatibility copy under content/swiftbar/, so a link created by an older devkit remains valid during the transition and after rollback.

    If SwiftBar is already running, quit it first, run devkit sync, then start SwiftBar — the running app would overwrite the folder from its cache.

    Already using SwiftBar with your own plugin folder? devkit leaves it untouched and names the link command; SwiftBar also reads subfolders reached through a link:

    Terminalbash
    bash
    ln -s ~/.onedot-devkit/swiftbar \
      "<your plugin folder>/devkit"
  3. Start SwiftBar and confirm the icon:

    Terminalbash
    bash
    open -a SwiftBar

    The mark appears in the menu bar. Click it and choose "devkit ausschalten"; the mark dims and devkit status --json shows "enabled": false. The change applies from the next session on, like the commands themselves.

What the menu offers ​

EntryRunsTakes effect
devkit ausschalten / einschaltendevkit off / devkit onnext session
Codex mit einrichten: automatisch / immer / niedevkit config codex auto|on|offnext devkit sync or devkit apply
OpenCode mit einrichten: automatisch / immer / niedevkit config opencode auto|on|offnext devkit sync or devkit apply
Update-Kanal: stable / latestdevkit config channel stable|latestnext devkit sync; shown only while the source is HTTP — a local checkout or Git source has no channel
Reviewer für /review: Claude Code / Codex / DeepSeek Harness / …devkit config review-runtime <name>next delegation; the list holds claude plus every registry runtime with review_role: true, and devkit refuses a name whose binary is missing
Werkzeuge für /delegate → Pi, DeepSeek Harness, … → automatisch / immer erlauben / sperrendevkit config runtime <name> auto|on|offnext delegation; every runtime from content/model-runtimes.json except claude and codex
CLI-Tools: N installiert, N fehlend, N veraltet → ✓ / ✗ / ↑ per tool → Fehlende Pflicht-Tools installieren / Optionale Tools mit installieren / Veraltete aktualisieren / Auf Updates prüfendevkit tools, devkit tools --optional, devkit tools --upgrade, devkit tools --outdatedimmediately; the install and upgrade entries appear only while something is missing or outdated, and a notification names the result. Installed means the name resolves on PATH, outdated comes from the last devkit tools --outdated run — the menu itself never calls the network
Doctor ausführendevkit doctoropens a Terminal window with the full report; Enter closes it
Dokumentationopens https://devkit.one-dot.io/—

A check mark sits on the current value; in automatisch mode the heading also says whether the runtime is installed, and every heading carries a tooltip explaining the setting.

Runtimes appear under the name a teammate knows them by (dsh → "DeepSeek Harness"); the registry name still travels in the click. Below the switch, the plugin names a staged update waiting for the session boundary, a stale update check, and missing required tools.

Every value comes from devkit status --json, which now carries source_type, channel, staged_version, runtimes.{codex,opencode,pi}.{mode,active}, review_runtime.{configured,eligible}, registry_runtimes[].{name,mode}, missing_tools, tools[].{name,tier,installed,outdated} and tools_outdated_check (fresh, stale or missing, from the outdated cache's age) next to enabled, version and stale.

When the icon is wrong ​

Menu bar showsCauseFix
⚠ "devkit nicht gefunden"devkit is not in ~/.local/bin, /opt/homebrew/bin or /usr/local/binRe-run the installer, or link devkit into ~/.local/bin
⚠ "Status nicht lesbar"The active version predates devkit status --jsonRun devkit sync
A notification "devkit off fehlgeschlagen: …" or "devkit config … fehlgeschlagen: …"The command itself failed, for example while a sync holds the lockRun the same command in a terminal and read its full output

Internal docs — onedot-devkit · devkit

devkitdevkit syncdevkit statusdevkit doctordevkit helpInternal docs · ONEDOT digital crew