OpenGenie
Repository on GitHub
Apache-2.0 Databricks App 13 models · 4 providers · plus yours Source on GitHub

The Databricks coding agent,
on the model you choose.

Genie Code is the best coding agent for data engineering because it can see your workspace. OpenGenie gives an open-source agent the same kind of reach — Unity Catalog, SQL warehouses, notebooks, jobs — and hands back the two decisions Genie Code makes for you: which model does the work, and who you pay for it.

The OpenGenie shell at 1440 px: sessions and files in the left rail, a notebook in the centre, and the assistant docked on the right, labelled with the notebook it is bound to.
The app deployed in a Databricks workspace. The notebook is the centre of the screen; the assistant sits beside it and knows which notebook the conversation is about.

Why it exists

Genie Code gets one thing right that most coding agents get wrong: the agent works inside Databricks. It reads the catalogue, runs SQL on a warehouse, opens notebooks and inspects jobs, so its answers come from your data instead of from a guess. That context is why it is good.

Two things come with it that a team cannot change. The model is chosen for you, and the bill is metered by a product you do not configure. Raphael Mansuy built OpenGenie to keep the context and return those two decisions to the team: use the model you already pay for, or the one that is best at the task, and run the whole thing as a Databricks App in your own workspace.

Measured, not assumed

The model is the biggest lever on whether the work gets done

Same agent, same tools, same rules, eight development tasks graded against a live workspace. Only the model changed.

gpt-oss-120b 39%
Gemini 3.8 Flash 86%

One run per model. The fractions, the caveats and the command that regenerates these numbers are on the evidence page.

What the agent can reach

Each conversation starts its own tool server. It calls the Databricks APIs as you, the signed-in user, so Unity Catalog permissions still decide what the agent can see.

Unity Catalog

Lists tables, reads columns, types and comments, and searches table and column names across the catalogue — so it looks a column up instead of guessing it.

dbx_describe_tabledbx_search_tables

SQL warehouses

Runs the query rather than describing it, reads the result or the engine's error, and corrects the next attempt from what actually came back.

dbx_run_sql

Notebooks

Reads, searches and writes notebooks, then runs them and reports the first failing cell in the engine's own words.

dbx_write_notebookdbx_run_notebook

Jobs

Creates and runs jobs under the conversation's name prefix, then checks that the latest run succeeded rather than assuming it did.

dbx_create_jobdbx_job_run_status

Lakebase and Apps

Creates a Lakebase Postgres instance, runs SQL against it, and scaffolds a Databricks App — each named inside the same prefix.

dbx_lakebase_sqldbx_create_app

Skills

4 written playbooks — notebook authoring, ETL pipelines, Lakebase and Databricks Apps — that the agent loads only when a task needs one.

dbx_skill

That is the 20-tool core profile the app starts. The tool server has 28; catalogue and schema listings, lineage, grants, pipelines and warehouse lookups are in its full profile, and left out of the app by default because an agent advertises every tool on every request and pays for it in tokens.

Three rules the server enforces

Not instructions in a prompt. Each one is code you can read, with tests.

1

The model is a setting

13 models from 4 providers ship in the catalogue — Databricks serving endpoints, OpenAI, Anthropic and Google Vertex — and the serving endpoints your workspace exposes are discovered at run time. A personal provider key is stored encrypted, with the key held in a Databricks secret.

seed/llm_models.yaml
2

Writes stay inside the fence

A conversation's tool server is started with one folder, one schema and one job-name prefix. A write anywhere else is refused by that server, with the reason; a write you make from the app outside the folder waits for your approval.

adapters/mcp/registry.pydomain/scope.py
3

Done means proven

When the agent says a requirement is met, the claim is matched against the tool calls it actually made. A citation to a call that never happened is reported as exactly that.

domain/evidence.py

How it fits together

One Databricks App process. For each conversation it starts an opencode agent over the Agent Client Protocol and a fenced tool server beside it.

  1. Youin the browser, signed in to Databricks
  2. OpenGenie AppFastAPI and React, acting as you
  3. Agentopencode acp, one per conversation
  4. Tool serverfenced to your folder, schema and prefix
  5. Your workspaceUnity Catalog, warehouses, notebooks, jobs
The model is called by the agent: a Databricks serving endpoint or AI Gateway route, OpenAI, Anthropic, or Vertex. You pick it in the composer.
Lakebase holds what must survive a restart: the conversation journal, the model catalogue, and encrypted provider keys.

What working with it looks like

The mission view after a completed request: the objective, the notebook the agent wrote, three requirements each marked verified, and the plan it followed.
One request, one view: what was asked, what was written, and which tool call proves each requirement. (A local run with a scripted agent.)

It keeps working when you leave

The work runs on the server and is journalled. Close the tab and come back to the result; after a restart, the app says what was interrupted instead of replaying it blindly.

A notebook, not a chat log

Run all stops at the first failure and shows where it is. Fix with agent sends the engine's own error, bound to that cell. Python cells, run on serverless by an administrator, draw their plots under the cell.

Show it, don't describe it

Attach a file or paste a screenshot of a failing dashboard. If the chosen model cannot see images, the app names that model and tells you to pick one that can, instead of sending pixels nobody reads.

Genie Code or OpenGenie?

They solve the same problem with different trade-offs. Pick on the trade-off, not on the logo.

Stay on Genie Code if

  • you want nothing to deploy, configure or operate;
  • one model is fine for your work, and the metered cost is acceptable;
  • your hardest problem is finding the right table among thousands, where Genie's business semantics help most;
  • you need inline completion, or Python running as you on your own clusters.

Use OpenGenie if

  • you want to choose the model per task, or use one you already pay for;
  • writes must stay inside a named folder and schema, enforced by the server;
  • you want the agent's “done” checked against what it actually ran;
  • you want to read, change and self-host the code under Apache‑2.0.

What this is not

Every score on this site is computed at build time from the run files in exams/results, and every count of models and tools is read from the application's source. If a figure and its source disagreed, the build would fail rather than publish.

Start here