packages/app-core/platforms/macos/README.md
Native SwiftUI macOS 26 shell for running elizaOS on newer Macs. This is separate from the existing Electrobun desktop shell at packages/app-core/platforms/electrobun.
packages/app-core/platforms/macospackages/app-core/platforms/macos/Package.swiftSources/ElizaMac/App/ElizaMacApp.swiftscript/build_and_run.shpackages/app-core/platforms/macos/
Package.swift
README.md
script/
build_and_run.sh
Sources/
ElizaMac/
App/
AppDelegate.swift
ElizaMacApp.swift
Services/
MacAutomationService.swift
MacNotificationService.swift
ProfilePreferences.swift
ThemePreferences.swift
Stores/
AppModel.swift
Support/
ThemeRendering.swift
WindowTransparencyBridge.swift
Views/
AgentsView.swift
AppSettingsView.swift
ApprovalsView.swift
AutomationsView.swift
BrowserSurfaceView.swift
ChatView.swift
CloudView.swift
ConnectorsView.swift
ContentView.swift
DashboardView.swift
DiagnosticsView.swift
EmbeddedWebView.swift
FirstRunNameView.swift
HealthView.swift
HeartbeatsView.swift
InspectorView.swift
LifeOpsView.swift
LogsView.swift
MemoryView.swift
MenuBarStatusView.swift
ModelRoutesView.swift
PermissionsView.swift
PluginsView.swift
ReleaseView.swift
RuntimeOverviewView.swift
SidebarView.swift
ThemeCustomizationView.swift
UpdatesView.swift
VaultView.swift
WalletsView.swift
WelcomeView.swift
WebConsoleView.swift
WorkspacesView.swift
Components/
DetailGrid.swift
EmptyStateView.swift
FeatureCard.swift
FeatureGrid.swift
GlassCard.swift
MetricTile.swift
SectionHeader.swift
StatusPill.swift
ElizaMacCore/
Models/
AgentProfile.swift
AppSection.swift
CapabilitySummary.swift
ConnectorProfile.swift
DiagnosticItem.swift
ModelRoute.swift
RuntimeCommand.swift
RuntimeConfiguration.swift
RuntimeLaunchMode.swift
RuntimeStatus.swift
SettingsPane.swift
ShellFeature.swift
ShellMetric.swift
ThemeSettings.swift
RuntimeTelemetry.swift
UserProfile.swift
WorkspaceProfile.swift
Services/
BunExecutableResolver.swift
ElizaRepositoryResolver.swift
RuntimeAPIClient.swift
RuntimeController.swift
Tests/
ElizaMacCoreTests/
AppSectionTests.swift
BunExecutableResolverTests.swift
ElizaRepositoryResolverTests.swift
RuntimeCommandBuilderTests.swift
RuntimeConfigurationTests.swift
RuntimeAPIClientTests.swift
ShellFeatureTests.swift
ThemeSettingsTests.swift
UserProfileTests.swift
ElizaMac owns SwiftUI scenes, AppKit launch behavior, menu bar extra, inspector, settings, diagnostics, and user-facing windows.ElizaMacCore owns runtime configuration, repository discovery, process command construction, and process control.Tests/ElizaMacCoreTests validates non-UI behavior without opening a window.The shell targets macOS 26 through SwiftPM tools 6.2 and uses 2026 SwiftUI structure:
NavigationSplitView for the main hierarchy.searchable plus searchToolbarBehavior(.automatic) at the split-view level.ToolbarSpacer for native toolbar grouping.glassEffect and GlassEffectContainer for custom Liquid Glass cards.inspector for detail context.Settings scene for preferences.Window("Diagnostics", id: "diagnostics") for a dedicated utility window.MenuBarExtra for quick runtime controls.The current sections are Welcome, Dashboard, Chat, Workspaces, Runtime, Agents, Plugins, Connectors, Models, Memory, Heartbeats, LifeOps, Health, Automations, Approvals, Wallets, Vault, Browser, Cloud, Release, Console, Permissions, Diagnostics, Logs, Updates, and Settings.
The native surface map mirrors the core elizaOS desktop flows:
ScheduledTask runner, default packs, approvals, outputs, and auditable task behavior.@elizaos/plugin-health registries for connectors, anchors, bus families, and packs.The Plugins surface includes the current internal and registry app catalog exposed by elizaOS:
appWindow=1#/apps/<slug> route shape; detached shell surfaces use ?shell=surface&tab=<surface>, and Browser uses the existing browse query parameter.On first launch the main window switches into a transparent AppKit-backed mode and shows the Eliza name prompt over animated glowing orbs. The saved profile name is reused across Dashboard, Welcome, Runtime, Settings, the menu bar dashboard, and runtime launch environment variables.
The menu bar extra uses .menuBarExtraStyle(.window) so it can render a compact custom dashboard with Swift Charts instead of a plain menu. Its current graph surfaces are runtime activity bars, model-route capacity lines, feature metrics, wallet readiness, and quick actions for Dashboard, Chat, Plugins, Agents, LifeOps, Health, Approvals, Wallets, and Diagnostics.
The shell now includes a native runtime probe client for:
GET /api/healthGET /api/agentsGET /api/logsGET /api/wallet/configGET /api/wallet/addressesGET /api/wallet/balancesGET /api/wallet/steward-statusRuntime refresh updates the native Dashboard, Runtime, Diagnostics, Logs, Connectors, Agents, Wallets, and menu bar graph surfaces with the live runtime readiness, plugin load/failure counts, connector statuses, active agent metadata, uptime, recent log entries, wallet source, balance readiness, signing status, and Steward vault status. Probe failures are surfaced as critical diagnostics instead of being hidden behind static defaults.
The Swift shell exposes deliberate macOS actions instead of background prompts:
UNUserNotificationCenter with explicit Request and Test actions.Appearance customization is centralized in ThemeSettings and surfaced through ThemeCustomizationView. Users can change:
The app starts with three runtime modes:
local: launch the canonical repo runtime with bun run start from the detected elizaOS repo root.external: point the shell at an already-running API base.disabled: keep the UI open without starting or targeting a runtime.Default ports match the existing repo conventions:
313372138When a profile name is set, runtime launches include:
ELIZA_USER_NAMEELIZA_PROFILE_NAMEWhen the local run script launches the app bundle, it passes:
--eliza-repository-root <repo>Packaged launchers can also provide:
ELIZA_REPOSITORY_ROOTFrom this directory:
swift build
swift test
./script/build_and_run.sh
The run script builds a local .app bundle under dist/ElizaMac.app and opens it as a foreground macOS app.