Beacon is a private, local-first AI assistant for Apple devices. It makes it easy to discover and chat with on-device language models while keeping conversations and inference on your device.
The project explores what a polished, approachable interface for local AI can look like. Beacon supports different model families and capabilities so people can choose the model that best fits their device and task.
- Private on-device chat with local MLX models
- Apple Foundation Model support when available
- Curated model marketplace and local model downloads
- Persisted chat history
- Markdown assistant responses
- Streaming responses with a stop button
- Support for regular, reasoning, and vision models
- Attach and analyze images with the downloadable Qwen2-VL vision model
- Shortcuts/App Intents support for asking the selected model
BeaconModelRuntimeloads and streams local modelsResources/models.jsondefines the bundled Hugging Face MLX model catalogRequestLLMIntentexposes a Shortcuts action for asking the selected model
- iOS Simulator or device supported by the project
- Xcode
Open beacon.xcodeproj in Xcode, select your signing team and bundle identifier, then build the beacon scheme.
Add or update compatible models by editing beacon/Resources/models.json. Downloadable entries must use a Hugging Face repository supported by MLX Swift LM.
-
Clone the repository:
git clone https://github.com/armondschneider/beacon.git cd beacon -
Open
beacon.xcodeprojin Xcode and wait for Swift Package dependencies to resolve. -
In the target's Signing & Capabilities settings, select your Apple Developer team and choose a unique bundle identifier.
-
Connect and unlock your iPhone, select it as the run destination, then press Run.
-
Download a text model from the marketplace. To attach images, download and select Qwen2-VL 2B 4-bit (Image).
Contributions are welcome. If you find a bug, have a feature request, or want to propose a larger change, open a GitHub issue so it can be discussed and tracked.
To submit a pull request:
- Fork the repository and create a focused branch.
- Make the smallest change that fully addresses the issue.
- Build the app and run the relevant tests.
- Use Conventional Commits for commit messages.
- Open a pull request that explains the problem, the solution, and how it was tested.
Common commit prefixes include:
feat: add a model selector to the chat composer
fix: prevent duplicate chat submissions
docs: clarify local development setup
test: cover reasoning output filtering
chore: update project dependencies
Keep pull requests focused on one concern. Link the relevant issue when one exists, and include screenshots or recordings for visible UI changes.
Report vulnerabilities privately as described in SECURITY.md.
Beacon is available under the MIT License.