Code Editor #
A native macOS agentic development workspace built with SwiftUI, Foundation Models, AppKit, and WebKit.
- Projects and grouped conversations on the left; files, search, and source control on the right.
- SF Mono interface, directory-first natural sorting, and 760-point conversation/Markdown reading columns.
- Draggable tabs, horizontal/vertical splits, detached windows, and persistent drafts/layouts.
- Native syntax-highlighted editing, Markdown chat and preview, PTY terminals, and a browser with agent-controlled DOM tools.
- Git status, hunk staging, history, branches, remotes, merge/rebase, conflict resolution, and worktrees.
- On-device agent execution with enforced Plan mode, Ask/Auto permissions, and explicit trust.
- ATProto App Password sign-in, Tangled discovery/SSH setup, and read-only spindle, Marque, and Wisp dashboards.
- MCP stdio and Streamable HTTP connections with bearer/OAuth authentication.
Build and run #
Requirements: Apple silicon, macOS 26+, Xcode 27, XcodeGen, and Xcode's Metal Toolchain component. Apple Intelligence must be enabled and its model ready to run the local agent. The editing tools remain usable if the model is unavailable.
./script/build_and_run.sh --verify
The script generates CodeEditor.xcodeproj, builds an ad-hoc signed local app, and launches it. It uses the installed Xcode beta if the configured Xcode path is missing. The Codex Run action invokes the same script. Optional modes: --debug, --logs, --telemetry.
To install the Metal compiler if Xcode reports it missing:
DEVELOPER_DIR=/Applications/Xcode-beta.app/Contents/Developer xcodebuild -downloadComponent MetalToolchain
Tests:
DEVELOPER_DIR=/Applications/Xcode-beta.app/Contents/Developer swift test --package-path Packages/ADEKit
Working in the app #
Open an existing directory or create/clone a project. Start a conversation in its shared checkout or an isolated Git worktree. Open files from the right navigator; use Add Pane for a browser, review, or service dashboard. The focused tab determines the navigator's checkout. Tab context menus detach and duplicate tabs; drag tabs between groups.
Use Settings → General to set the default permissions for future projects (initially Ask). Existing projects keep their settings. Project context menus and the conversation composer provide overrides. Auto requires explicit project trust. Shell commands run as the current macOS user; this permission layer is not an OS sandbox. Destructive and uncertain actions still request approval. Plan mode exposes verified reads only.
Enable Agent access in an individual browser origin before the agent interacts with it. Sign in manually to websites; password fields remain manual. Web content and MCP responses are treated as untrusted context. Agent tools do not control other desktop applications or external browser profiles.
Editor saves use Command-S. Unsaved drafts survive restart and are shared by all tabs viewing the same canonical file. If the disk changes under a dirty draft, save is blocked until the conflict is resolved. UTF-8 files up to 8 MB are supported; binary/large files can open externally. Text search is bounded and reports its limit.
Terminal panes retain running shells while hidden. After app restart, shells require an explicit restart; prior commands are never replayed. Worktrees persist until explicitly removed through source control.
Accounts and models #
ATProto sign-in resolves the account PDS and stores session tokens in Keychain, not source control. Git uses a separately selected SSH identity and existing host trust. Public-key registration and connection tests are explicit actions. Service dashboards show recorded data and last refresh, distinguish errors from empty results, and allow explicit project associations.
Private Cloud Compute is implemented as a conditional provider but disabled in this Developer ID-oriented build. Enabling it requires macOS 27, Apple's managed entitlement, eligibility, and supported distribution. No third-party model provider or silent cloud fallback is configured.
MCP server configurations are local; credentials stay in Keychain. The OAuth callback scheme is ade://oauth/mcp. MCP tool execution requires approval because remote descriptions/annotations do not establish safety.
Project structure #
App contains the macOS entry point. Packages/ADEKit contains the independently tested WorkspaceCore and ADEKit modules. project.yml is the XcodeGen source of truth. Resolved dependency revisions are checked in.
This is a local development build. Release signing/notarization, PCC activation, and authenticated external-service acceptance require their respective accounts and credentials. Language servers, debugging, native pull-request collaboration, CI administration, and DNS/deployment editing are outside this first release.
- Swift 99%
- Shell <1%