A macOS companion app for Construct that lives in your MacBook's notch. Chat with your AI agent from anywhere — hover over the notch to check status, click to expand the full chat interface.
- Three-state notch UI — Collapsed pill blends with the hardware notch, compact bar appears on hover, full chat panel expands on click
- Real-time agent chat — Send messages, see streaming responses, track tool execution and activity
- Voice input — Speech-to-text via ElevenLabs for hands-free interaction
- Screenshot sharing — Capture your screen and share it with the agent
- Slash commands —
/newto start a fresh session,/clearto clear chat history - Settings — User profile, agent config, connection status, subscription & usage, all synced with the web app
- Device-code auth — Link with your Construct account securely through the webapp (no OAuth in the native app)
- Menu bar controls — Quick access to open notch, new/clear chat, settings, and sign out
- Keyboard shortcuts —
Ctrl+Spaceto toggle the panel,Escto dismiss
- macOS 14.0 (Sonoma) or later
- Xcode 16.0+
- XcodeGen
# Clone the repo
git clone [email protected]:construct-computer/notch.git
cd notch
# Run setup (installs xcodegen if needed and generates the Xcode project)
./setup.sh
# Open in Xcode
open NotchConstruct.xcodeprojBuild and run with Cmd+R in Xcode. The app runs as a menu bar agent (no Dock icon).
NotchConstruct/
├── App/ # App entry point, AppDelegate, lifecycle
├── Agent/ # AgentViewModel, event handling, WebSocket events
├── Notch/ # Notch UI: panel, shape, content view, detector
├── Views/ # Reusable views: chat, input, activity, loader
├── Settings/ # Settings window: user, connections, subscription, general
├── Services/ # API client, auth, WebSocket, voice, screen capture
├── Models/ # Data models: user, messages, API responses, config
├── Utilities/ # Constants, keychain helper
└── Resources/ # Assets, Info.plist, entitlements, loader animations
- SwiftUI + AppKit — SwiftUI views hosted in a borderless
NSPaneloverlay - @Observable — Reactive state management with Swift's Observation framework
- Three-state morphing —
NotchShapeanimates between collapsed, compact, and expanded with spring physics - WebSocket — Real-time connection to the Construct agent with auto-reconnect and keepalive
- Device-code auth — Polling-based account linking through the webapp
- Click "Link with Webapp" in the app
- A 6-character code is displayed
- Open the link in your browser (you must be logged into Construct)
- Enter the code to approve
- The app receives a JWT and connects automatically
Proprietary — Construct Computer, Inc.