Most “AI search” is a model with a browser plugin and a prayer. The prompt leaves your tenancy, the scraper is whoever’s, and the citation is a URL you hope still exists. We wanted research next to the wiki, with a job you can poll, a citation you can keep, and a network diagram you can defend.
| Topic | ||||
|---|---|---|---|---|
| Who searches | Private SearXNG, via CRW | OpenAI’s browsing | Your pages | Rovo / Atlassian |
| Who renders | Lightpanda, then Chrome | Theirs | N/A | Theirs |
| Django talks to | CRW_URL + CRW_API_KEY. That is it. | ChatGPT | Notion | Atlassian |
| The job | Durable AIJob. Poll phases. | The thread | A chat over pages | A Rovo session |
| Connected apps | Composio sources as citations | If you paste them | If you built the DB | Jira macros |

Pick Kraken Deep Search if
The wiki has to retrieve the web, and you are not willing to hand the language model a browser.

Pick ChatGPT if
You want an answer with browsing in one tab, and you accept that the retrieval is theirs.

Pick Notion if
Q&A over your own pages is enough. You do not need a private search engine.

Pick Confluence if
Rovo is already in the Atlassian bill, and leaving the retrieval there is a political fact.
Kraken Ask is the surface. You pick a model the workspace is allowed to use. The API validates that, then either streams a short turn or mints a durable AIJob and returns. The browser does not hold the research loop open. If you close the tab, the job is still a row.
The actual architecture
- shellstack-api and qcluster call only CRW (CRW 0.31 in our stack). One URL, one API key.
- CRW owns retrieval. Behind it, on a private Compose network: SearXNG, Lightpanda, then Chrome. Those ports are not public.
- Phases persist on the job: preparing, search, scrape, read, results, think, write, memory, done — or a safe failure. Citations stay with the job.
- PDF extraction in Kraken’s attachment pipeline also uses CRW. Same boundary. Django does not grow a second scraper.
- Coolify: only CRW gets a domain. SearXNG, Lightpanda and Chrome stay on the research network. Same key on the API and the worker.
- The optional Browserless stealth Chrome is SSPL-3.0. Review that licence before you turn it on. Default Chrome is the honest path.
What we refuse to do
Never point Django or a Shelly browser bundle at SearXNG, Lightpanda or Chrome. If a future feature needs a page fetch, it goes through CRW. That is the whole point of having a retrieval service.
Composio as a research source
The same workspace connections you use for GitHub and calendar can be read-only research sources. Kraken Deep Search will search connected apps, bound the tools and the hits, and treat them as citations — not as a prompt dump. Tokens stay in the API process. The browser never sees a Composio secret.
If the model needs the web, give it a retrieval service. Do not give it the network.
Use this stack when research has to sit beside the document, and the scraper is not allowed on the same network as billing.



