Using my apps is also a way to support me:
English | 简体中文
Prism is a SwiftUI menu bar companion that organizes Claude-compatible API services, whether they come from direct model providers or third-party Anthropic-compatible gateways. The project was created as an experiment to validate large language models' ability to ship real macOS utilities; most of the code was generated by AI agents, with minimal human assembly and polish. The prototype turned out to be genuinely useful, so we decided to open source it—please enjoy it, and respect the license that makes this release possible.
- 🧱 Manage multiple AI provider profiles with typed environment variables and per-provider icons
- 🔁 One-click activation that writes to
.claude/settings.jsonwhile preserving user-managed keys and keeping backups - 🧠 Pre-built templates for popular Claude-compatible services (Zhipu AI, Moonshot, DeepSeek, MiniMax, etc.) plus a custom profile for anything else
- 🛡️ Automatic config backups and token masking so risky fields stay guarded in logs
- 🔔 Sparkle-powered update checks right from the menu bar
- 🎯 Minimal, keyboard-friendly UI sized for quick status bar interactions
Prism/App/— status bar entry point, popover lifecycle, Sparkle updater bootstrapViewModels/—@Observablemodels powering provider selection, updates, and UI state transitionsViews/andViews/Components/— SwiftUI surfaces for provider management, animated transitions, and confirmation popoversServices/— configuration access, import/sync helpers, and provider persistenceModels/— shared types for environment values, provider templates, and token deduplication rulesExtensions/— lightweight styling helpers and gradient button styles used across the UI
-
Clone the repository and switch into the project folder.
-
Open
Prism.xcodeprojin Xcode 16 (Swift 6 toolchain) or newer. -
Select the
Prismscheme and build the app (Command + B), or run tests with:xcodebuild -scheme Prism -configuration Debug test -destination 'platform=macOS'
-
Ensure the app can read and write
~/.claude/settings.json(Prism runs unsandboxed, so the file must exist and be writable for your macOS user).
- Prism writes directly to
.claude/settings.json; avoid editing the file simultaneously in other tools to prevent conflicting changes. - Prism stores a backup before every write; the
settings.json.backupfile lives alongside the primary config so you can recover quickly. - Sensitive fields such as
ANTHROPIC_AUTH_TOKENare masked in debug logs; please treat API keys as secrets when filing issues or sharing screenshots.
Prism was scoped, scaffolded, and iterated primarily by autonomous AI developers. Humans reviewed architecture, validated file-system access paths, and polished the interface, but the bulk of the Swift you see emerged from model-driven workflows. Opening the codebase lets others evaluate, stress-test, and extend this AI-built foundation—feedback on model quirks or edge cases is especially valuable.
Prism was built to benchmark models like GLM 4.6 in real coding scenarios. Friends kept asking for the tool, so it made sense to publish the source. Please respect the license and share back improvements.
Issues and pull requests are welcome—whether you spot AI-generated oddities, want to add new provider templates, or can expand test coverage for configuration edge cases. Please keep contributions in English, observe the existing folder structure, and run xcodebuild ... test before submitting. By participating you agree to respect the AGPLv3 license.
Prism is released under the GNU Affero General Public License v3.0. You may use, modify, and redistribute it as long as derivative works remain under the same license and you provide complete source code access. Please keep the license notice intact and thank you for honoring the agreement that keeps Prism open.