eodia insights
All your databases. One source of truth.
Ask PostgreSQL, MongoDB and Snowflake a question in a single query. Everyone sees only what they’re allowed to see — even in free-form SQL.
- Open source, AGPL-3.0
- AI assistant and forecasts
- Permissions enforced by Trino
A question, without a line of SQL.
Pick a table, filter, summarize: the chart draws itself as you click.
Or all the SQL you want.
A Trino editor with autocomplete, variables and formatting. Join two databases like two tables.
Ask. It answers, chart in hand.
The assistant searches your schema, runs the query under your permissions and shows you the result — to keep as a question.
It all comes together on a dashboard.
Cards, filters that drive the whole page, auto-refresh — and a link to share.
And what comes next.
A curve goes on in one click: the trend, the season and a margin of uncertainty, computed in your browser.
The demo
eodia insights, in one minute. in four minutes.
Questions, charts, SQL, the AI assistant, dashboards and permissions: the essentials, narrated and set to music.
From the first question to the shared dashboard, and the same data seen by two people: the full guided tour.
The films are narrated in French, with English subtitles.
Chapters
AI Assistant
Talk to your data. It answers in charts.
A screen to talk with your data: the assistant finds the tables, writes the SQL, runs it with your permissions and shows you the answer as interactive charts. Every conversation is kept, for you alone.
What is the ticket resolution time by reason, for Premium customers?
Thinking…
- Searching the schema · 2 tables
- Reading the table · Tickets
- Running the query · 6 rows
- Preparing the chart
Average resolution time
Premium customers · last 90 days
6 rows · with your permissions Save as question ›
Refunds take the longest to resolve: 61 h on average, twice as long as account questions. Shall I compare with Standard customers?
- Charts, not walls of text Every answer with figures comes as an interactive chart: switch its type in one click, see its SQL, save it as a question.
- Your sources, your permissions Pick the sources in the input; Trino applies your permissions, masked columns and row rules included.
- A history of your own Conversations are kept, grouped by date, searched, renamed. And a copilot stays in every screen.
Anthropic, OpenAI, Mistral or any OpenAI-compatible service — including one you host.
Dashboards
Today’s numbers, up to date.
Drag questions onto a grid, add filters that drive every card, tabs, text. The dashboard refreshes itself; the cache makes it instant.
Linked filters
One period, one region: every card follows, whatever its source.
Refreshed, cached
Auto-refresh, a result cache, and warm-up by the worker.
Shared
A public link, a members-only link, or a signed embed in your product.
NewForecasts
What happened. And what’s next.
One click extends a line, an area or bars by 3, 6 or 12 periods. eodia insights recognises the season, draws the trend in green dashes and tells you how far to trust it.
The season, recognised
Holt-Winters as soon as the series covers two seasons — 12 months, 4 quarters, 7 days; otherwise a smoothed trend, or a straight line.
An honest interval
The 80 % range widens with the horizon: you see at a glance what is likely, and what is a bet.
Wherever your charts are
Lines, areas, bars and combos, in questions and dashboards — and all the way into Claude, through the MCP server.
Themes and PDF
In your colors, down to the PDF.
Fonts, colors, cards, chart palette and logo: apply a theme to a folder and everything in it wears it — subfolders, questions, dashboards, shared links and their PDF prints.
- Applied to a folder The folder, its subfolders, their questions and dashboards inherit it; a subfolder or a dashboard can wear its own.
- Your brand, in ten settings About twenty fonts, the accent, backgrounds, card corners and shadow, solid, hatched or gradient bars, your logo.
- Down to the PDF Export to PDF lays the dashboard out on A4 pages in its colors: cover page, applied filters, vector charts, footer and page numbers.
Permissions that hold
Same query. Everyone their own data.
Before every statement, Trino asks eodia insights what the person can read. Rows from other regions vanish, emails get masked — even in free-form SQL.
Trino → eodia insights
- Access to boutique.clients: allowed
- No row filter
- No column mask
- Access to boutique.clients: allowed
- Row filter: region = ’Bretagne’
- Mask: email
region = {{user.region}} Rows
Per-group rules, based on the person’s attributes. A missing attribute closes access — it never opens it.
Columns
Hidden, they no longer exist; masked, Trino replaces the value. In questions, exports, the API.
Everywhere
Editor, free-form SQL, cards, copilot, API, MCP: one decision point, no back door.
One engine
Seven databases. One query.
Every query goes through Trino: the visual editor, SQL, cards, the copilot, the API and MCP. A PostgreSQL table and a MongoDB collection join like two tables in the same database.
select c.region,
avg(o.montant_total) as panier_moyen,
count(t.ticket_id) as tickets
from boutique.public.commandes o
join boutique.public.clients c on c.id = o.client_id
left join support.support.tickets t on t.client_id = c.id
group by c.region One dialect
Trino SQL everywhere: in the editor, in questions, in what the copilot writes.
Added on the fly
A database connected from the UI becomes a Trino catalog — no restart, nothing.
Encrypted secrets
Source credentials are encrypted with AES-256-GCM; Trino writes nothing to disk.
What’s new
Charts that tell you something.
Races to replay time, bubbles and treemaps for shares of shares, a calendar, key figures with their sparkline — in an interface that speaks your language and updates before your eyes.
Bar and line races
Replay history period by period: bars overtake each other, lines draw themselves, the date is written large.
Learn more ›Bubbles and treemaps
Bubbles on two axes or packed, nested rectangles, a pie on several rings: shares of shares, readable at last.
Learn more ›The calendar
One value per day, as dots or colored squares: weekdays, seasons and gaps jump out.
Learn more ›Key figures and sparklines
The figure, its small curve — green when it goes the right way, red otherwise — and its change from the previous period.
Learn more ›French, English, Spanish
The interface takes the browser’s language, or the one chosen in the account menu; API messages follow.
Learn more ›Refreshed live
On refresh or a filter change, cards stay on screen and their marks slide to the new values.
Learn more ›API and MCP
Your metrics, in Claude.
The MCP server gives Claude — or any agent — the tools to explore your data: search the schema, query a metric, run a question. The token carries its owner’s permissions, not one more.
The MCP server’s tools
list_datasourcessearch_schemadescribe_tablelist_metricsquery_metriclist_questionsrun_questionrun_sqlget_dashboardshow_chart
orders · region = Bretagne · by month # Exécuter une question enregistrée, sous les droits du jeton
curl -X POST https://insights.exemple.fr/api/v1/questions/$QUESTION_ID/run \
-H "Authorization: Bearer eoi_…" \
-H "Content-Type: application/json" -d '{}'
# Toute l’API, décrite en OpenAPI 3.1
curl https://insights.exemple.fr/api/v1/openapi.json // Dans votre application : signez, puis intégrez.
const token = jwt.sign({
resource: { dashboard: DASHBOARD_ID },
user: { id: 'client-42', attributes: { region: 'Bretagne' } },
}, secret, { algorithm: 'HS256', keyid: kid, expiresIn: '10m' });
<iframe src="https://insights.exemple.fr/embed?token=${token}"> And everything you expect from a BI tool.
What gets a team to adopt it — and lets an admin sleep at night.
Engines
PostgreSQL, MySQL, SQL Server, Oracle, Snowflake, MongoDB and Trino.
Data sources
Connection, descriptions, semantic types, relationships and values: your schema, readable at last.
Single sign-on
OpenID Connect; attributes and groups come from your directory.
CA = sum(montant_total) Models and metrics
Defined once, reused everywhere, queryable through the API and MCP.
Folders
A personal folder for everyone, shared folders with per-group permissions.
History
Every query run: who, what, how long, from where.
system.query(…) Native SQL
The database’s own dialect, reserved for those with no restriction on the source.
Audit log
Sign-ins, permissions, sources, tokens, shares: everything is logged.
AI Assistant
Talk with your data: written answers, interactive charts, a history kept for you.
Themes and PDF
Your brand applied to a folder, inherited by everything in it, down to the PDF export.
fr · en · es Three languages
The interface and API messages in the browser’s language, or the one you choose.
On your servers
Your data never leaves your server.
One Docker image, one Compose file: PostgreSQL for the catalog, Trino, the app, and Caddy for HTTPS. The first screen creates the admin account.
- Automatic HTTPS with Caddy
- One image, five roles: api, web, worker, mcp, all
- Sealed, replayable catalog migrations
Frequently asked questions
How is it different from Metabase?
The spirit is the same: questions, models, dashboards. The difference is underneath: every query goes through Trino, which joins your databases together and enforces row and column permissions itself — free-form SQL included.
Do I need to know how to run Trino?
No. eodia insights creates and recreates the Trino catalogs from your sources on its own; Trino keeps no state. A single container is enough to get started.
Can free-form SQL bypass permissions?
No. Permissions aren’t enforced by the interface but by Trino, which checks with eodia insights before every statement: table access, row filters, column masks. Native SQL, which would bypass Trino, is reserved for those with no restriction on the source.
Can I trust the forecasts?
As much as the series they extend. eodia insights picks the method from the data — Holt-Winters when the series covers two seasons, a smoothed trend otherwise — and surrounds the forecast with an 80 % interval that widens with the horizon. It does not guess what the data does not hold: a new offer, a crisis.
MongoDB, really?
Yes: a collection reads like a table, and joins a PostgreSQL or Snowflake table in the same query. Subdocuments come through as structs.
Does my data go to an AI provider?
Only if you enable AI, with the provider you choose — Anthropic, OpenAI, Mistral or an OpenAI-compatible service, including one you host. Without a key, there is no assistant and no copilot. What the model reads — schema, descriptions, query results — goes through your permissions; a quota per person per hour limits usage.
Can the AI assistant see or change more than I can?
No. Every query it writes runs in Trino under your identity: your tables, your masked columns, your row rules. It changes nothing — it suggests, you save. Its conversations are kept for you alone, and you can delete them.
Can I use my company’s brand?
Yes. An administrator creates a theme — fonts, colors, cards, chart palette, logo, PDF layout — and applies it to a folder: subfolders, questions, dashboards, shared links and PDF exports wear it. A dashboard can have its own.
Is it really free?
Yes, under the AGPL-3.0-or-later license: install it, use it and modify it freely. If you offer a modified version as an online service, you publish your changes.
Plug in your databases. Ask your questions.
One command to get started, a built-in demo to try it out, and the docs for everything else.