Skip to content

The AI assistant

Grafida can talk to a Large Language Model (LLM) about the article you have open: ask it questions, have it proofread or rewrite the text, or generate a draft from a brief.

It is entirely optional. Grafida ships with no AI provider configured and no API key, and every other feature works without one. If you never add a service, the AI button never appears in the editor.

If you would rather it were not there at all, there is one switch that removes it: Settings → Grafida → AI → AI assistant. See Turning the assistant off entirely at the end of this page.

What it can and cannot do

The assistant is text only for now. Article images still come from your own Media library or your own device — see Media. A model that can see — a so-called multimodal or vision model — can be sent the article's pictures as well, if you switch that on for the service. See AI Services.

The assistant always works on the article you have open. Its first message carries the article's title and HTML as context, so "make the second section shorter" means something. It is not a general-purpose chatbot bolted onto an editor.

What you need

  • An AI service: a provider, an endpoint, a model, and — for a hosted provider — an API key. See AI Services.
  • Nothing else. The assistant does not need your Joomla site to be reachable.

Grafida knows about OpenAI, Anthropic, Cohere, DeepSeek, Google, Groq, MiniMax, Mistral, OpenRouter, Perplexity, Scaleway and GitHub Models out of the box, and has two "Custom" entries for anything else that speaks one of the two OpenAI wire formats — including a self-hosted server on your own network, such as LM Studio, Ollama or llama.cpp on the computer beside you, which may be reached over plain http:// on your own network. There is also an on-device option on eligible devices — see Using the on-device model. On a device with enough memory you can go further and download an open-weights model to run locally — see Local Models. That works even where Apple Intelligence is unavailable, and likewise sends nothing anywhere; it runs fastest on an M-series chip (M1 or later), and still works, just noticeably more slowly, elsewhere.

The way in

Once at least one service is configured, an AI button appears on the editor's navigation bar. It opens a menu: any tools you have configured, then Custom…, which opens an empty chat for a free-form question. Both are described in AI Chat. What each tool asks the model to do, and how to change or add tools, is in AI Tools.

Note

The button is added when the editor opens. If you have just configured your first AI service, go back to the article list and open the article again.

Where your text goes

Grafida calls the provider you configured directly from the app, over URLSession — there is no server of ours in the middle, and nothing is sent anywhere unless you press a tool or send a message.

What that means in practice depends entirely on who you point it at. A hosted provider sees your article text under whatever terms you agreed with them. A model running on a server you control sees nothing that leaves your own network beyond that server itself. The on-device option and a model you downloaded send nothing anywhere at all — both run entirely on your device's own chip.

Important

Your API key is stored in the device's Keychain, and is read from there and attached to the request inside Grafida's own code — it never reaches the article editor's web view, and no bridge message or web page ever carries it. This is different from the desktop app, which hands the key to its own front-end code to make the call; on the device, only Swift ever sees it.

Invisible characters in the reply

Models routinely emit characters you cannot see — zero-width spaces, directional marks, tag characters — partly as a deliberate watermark and partly as an artefact of the text they were trained on. Grafida removes them from every reply as it is rendered and inserted, and again from the whole article when you publish it, because they are read out by screen readers and break find-in-page.

The Normalise AI-generated content setting governs it; see Settings, which also explains why removing them does not, and cannot, discharge your duty to disclose that you used AI.

Privacy, plainly

  • Your article text is sent to the provider you chose, when you ask for it — or nowhere, if you use the on-device option or a model you downloaded.
  • Saved chats are stored in Grafida's local database, alongside the article.
  • Requests to an AI provider are not written to the Request Log. That log's job is showing what Grafida has said to your Joomla site; a provider is not your site, and twenty exchanges carrying your article text and a provider API key are not something to hold for somebody who never asked.
  • A .grafida export carries the saved chats with the article, so treat an export as containing them.

Turning the assistant off entirely

Settings → Grafida → AI → AI assistant switches the whole feature off in one place. It is on to begin with.

With it off:

  • the AI entry is gone from the sidebar;
  • the AI button is gone from the editor's navigation bar;
  • Grafida sends nothing to any provider, on the device or anywhere else. There is no background activity left behind, because there is nothing left to run.

Nothing is deleted. Your services and their stored API keys, your tools and system prompt, the conversations saved with your articles and any local models you downloaded are all untouched, and are back the moment you switch it on again. A downloaded model still occupies its storage while the feature is off — delete the model on the Models tab if you want that space back, before turning the feature off (Local models).

The switch is in the device's own Settings app rather than inside Grafida, along with every other Grafida setting — see Settings for how to get there.