Model or dataset
gluonfield/enchanted avatar
gluonfield/enchanted

Enchanted: a native iOS, macOS and visionOS client for your own Ollama server

Enchanted is iOS and macOS app for chatting with private self hosted language models such as Llama2, Mistral or Vicuna using Ollama.

6,007 stars427 forksSwiftApache-2.0

At a glance

What is it?
Enchanted is a Swift app for the Apple ecosystem that talks to a self hosted Ollama endpoint. It is a thin, private front end rather than a model runtime, and the README now points new users at its successor, Jaz.
Who is it for?
Adopt Enchanted if you already run Ollama and want a native Apple client that keeps conversation history on the device. Do not adopt it for a new project: the README states that Jaz is the new iteration of this project and that you must run your own Ollama server.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 85 days ago.
What is it written in?
Mainly Swift, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The problem Enchanted solves: a native client for a self hosted model

Running a model locally with Ollama gives you an HTTP API on your own machine. What it does not give you is an interface that feels like a chat app on a phone, a laptop or a headset. Enchanted fills that gap. It is an Ollama compatible app for macOS, iOS and visionOS whose stated goal is an unfiltered, secure and private experience across the Apple ecosystem. The README describes it as essentially a ChatGPT style UI that connects to your private models.

The audience is narrow and specific. You need to be in the Apple ecosystem, you need to be running Ollama yourself, and you need to care that prompts and conversation history do not leave your infrastructure. The README states that conversation history is stored on your device and that all features work offline, which matters if the model runs on the same network as the client. If you are happy with a browser tab pointed at a hosted chat service, this project has nothing to offer you.

How Enchanted talks to Ollama: a client, not a runtime

The repository layout is a single Xcode project with an Enchanted source directory, which tells you what this is: a Swift application, not a server or a library you embed. There is no daemon to run and no model weights in the repository. The app holds a configurable server endpoint, sends prompts to it, and renders the responses.

The README lists what that client layer does. Conversation history is included in the API calls, so the model receives prior turns rather than treating each message as isolated. Markdown is rendered with tables, lists and code blocks. Prompts can carry image attachments, which is the multimodal part of the stated goal. You can set a system prompt for every conversation, edit message content, or resubmit a message against a different model. On macOS there is a Spotlight panel bound to Ctrl+Cmd+K. None of this changes the fact that inference happens on your Ollama host; the app decides what to send and how to display what comes back.

The consequence is that quality and speed are entirely your server's problem. A slow host produces a slow chat, and the app cannot compensate. The upside is that swapping models is a server side operation, and your chat history format does not depend on which model answered.

Installing Enchanted and pointing it at your Ollama server

The README gives two usage paths and both start from the App Store listing, not from a build. Enchanted requires Ollama v0.1.14 or later, so check that first. If your Ollama server is already publicly reachable, the setup is two steps: install the app, then enter your server endpoint in App Settings.

The second path covers the common case where Ollama runs on your own computer and is not exposed to the internet. The README instructs you to start the Ollama server, download models, then install ngrok and forward the server with this command:

shell
ngrok http 11434 --host-header="localhost:11434"

ngrok prints a forwarding URL that looks like a temporary hostname. Copy that URL and paste it into App Settings as the server endpoint. At that point the app can reach your local Ollama instance from a phone or headset on any network.

Two things about this deserve a plain statement. First, the tunnel is temporary; the URL changes when you restart ngrok, and you will re-enter it. Second, you are publishing your Ollama API to the internet for as long as the tunnel is up, and the README does not describe an authentication layer on this path. Treat the tunnel as something to open when you need it and close when you do not. The README does not document a reverse proxy or token setup as an alternative.

Where Enchanted is the wrong tool

The clearest limitation is stated by the project itself. The README opens with a line saying that Jaz is the new iteration of this project. Anyone starting fresh should read that as a signal about where effort is going, and the release history supports a cautious reading: v1.7.0 and v1.6.7 landed in May 2024, while v1.8.2 is dated 2026-06-15. The last push to the repository was on 2026-07-07. That is recent enough that the project is not abandoned, but the README's own pointer to a successor is the more useful fact when you are choosing what to depend on.

Beyond that, the architecture imposes real constraints. Enchanted is an Apple only client. There is no Android build, no Linux desktop build and no web interface, and the repository contains only an Xcode project. If your team is mixed platform, this is not a shared tool. The app also assumes you can run and reach an Ollama server; there is no bundled runtime and no hosted fallback, which the README makes explicit by telling you to run your own server. Finally, the ngrok instructions mean the out of the box remote story depends on a third party tunnel rather than a documented self hosted ingress. That is fine for personal use and awkward for anything with more than one user.

Enchanted compared with a browser based Ollama UI

The obvious alternative is a web front end served from the same machine that runs Ollama, typically accessed over your local network or through the same kind of tunnel. The difference is not cosmetic. A browser client works from any device with a browser, including Android and Linux, and it usually ships as a container or a single binary alongside the server, so there is one deployment to update.

Enchanted inverts those trade-offs. It only runs on Apple hardware, and it installs through the App Store rather than from your own infrastructure. In exchange you get platform integration that a web page cannot match: the macOS Spotlight panel on Ctrl+Cmd+K, voice prompts, text to speech for reading answers aloud, and image attachments for multimodal prompts. The README also states that conversation history is stored on your device, which is a different privacy model from a server side chat log that any browser session can read.

If your devices are all Apple and you want the app to feel native, Enchanted is the more comfortable choice. If you need one interface for a mixed team, a browser front end is the only one of the two that covers everyone.

Maintenance, licensing and what an upgrade costs you

Enchanted is licensed under Apache-2.0, which permits commercial and private use and requires that you preserve the licence and attribution notices when you redistribute it. That is a permissive licence, and it is not legal advice; read the LICENSE file in the repository for the actual terms. The repository also carries PRIVACY.md, PRODUCT.md and SUPPORT.md alongside the licence, so the privacy claims in the README have a document behind them.

Upgrade cost is low in the sense that there is nothing to operate: the app comes from the App Store and updates through it, and your server is a separate concern you already manage. The cost sits on the server side instead. Because Enchanted requires Ollama v0.1.14 or later, a pinned older Ollama install is the thing most likely to break the pairing. Release cadence is uneven, with a long gap between the 2024 releases and v1.8.2 in June 2026, so plan on checking the repository rather than assuming a steady stream of fixes. The README does not document any rollback procedure for the app or for server compatibility.

Editorial conclusion

Adopt Enchanted if you already run Ollama and want a native Apple client that keeps conversation history on the device. Do not adopt it for a new project: the README states that Jaz is the new iteration of this project and that you must run your own Ollama server. Before installing, verify your Ollama version is at least v0.1.14 and that your server endpoint is reachable from the device, which for a local server usually means an ngrok tunnel on port 11434.

Frequently asked questions

What is Enchanted?

It is an open source, Ollama compatible app for macOS, iOS and visionOS that connects to privately hosted models such as Llama 2, Mistral and Vicuna. The README describes it as a ChatGPT style UI for your own models, and states that you need to run your own Ollama server to use it.

What do I need to run before using Enchanted?

You need an Ollama server, and the README states that Enchanted requires Ollama v0.1.14 or later. If the server is not publicly reachable, the README's instructions use ngrok to forward it.

Does Enchanted work without an internet connection?

The README lists all features working offline, and states that conversation history is stored on your device. In practice that depends on your Ollama server being reachable from the device, which is why the README offers the ngrok tunnel for a server running on your own computer.

Official sources

  1. gluonfield/enchanted on GitHub
  2. Issues
  3. License: Apache-2.0
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/gluonfield-enchanted.svg)](https://hysenlabs.com/projects/gluonfield-enchanted)