Open source

OpenDeskThe mobile app your open-source stack never shipped.

NocoDB Supabase Airtable Grafana Metabase GitLab Excalidraw On-device AI + Add yours

One native iPhone app for the self-hosted tools teams already run. Install it, point it at your data, and your whole team gets the same app. It talks straight to each tool's API: no fork of the tool, no server of ours, no migration. The AI runs on the phone.

7tools, one app
0server changes
~5.9Klines of Swift
MITopen source, fork it
OpenDesk home screen: NocoDB, Grafana, GitLab and Metabase all live, a $169K sales pipeline, and a Brief me button

The gap

Enterprise open source still lives in a desktop browser

These tools won on self-hosting, price and control. The people who depend on them aren't always at a desk, though: the caterer at a venue walkthrough, the on-call engineer at dinner, the lead approving a merge between meetings. The web UIs technically load on a phone. Nobody wants to use them there.

ToolStands in forOfficial mobile appWhat people do on a phone today
NocoDBAirtable, a lightweight CRMNonePinch-zoom a spreadsheet grid
Supabase appsInternal admin panelsBuild your ownOpen the dashboard's table editor, or ask an engineer
Grafana (OSS)Datadog dashboardsNone for dashboardsSquint at 24-column panel layouts
MetabaseLooker, TableauNoneDesktop dashboards squeezed onto a phone
GitLabGitHubNoneThe desktop site in Safari
ExcalidrawMiro, FigJamNoneA browser tab that forgets your board

Day one

Install it, and it works with the data you already have

The hard problem isn't the charts. It's the first five minutes: getting a team's real data onto everyone's phone without an IT project. OpenDesk handles that inside the app.

ConnectYour NocoDB, or your Supabase appPaste a URL and a token, or sign in as a user of your own Supabase app.
ImportAirtable or a spreadsheetPaste an Airtable base link and NocoDB's own importer copies every table. Or pick a CSV from Files and the column types are detected for you.
TeamAdmins set it up onceCreate a team, publish the connections, and share a 6-letter code or QR. Members sign in and get the same app.
WorkEvery tab fills inBoards, charts, alerts and AI, on your real data, with your permissions.

What's built

Six tools, one app, all on live data

Events table as a Kanban board grouped by stage, with a dollar total per lane
Review changes sheet: Summit Bank Holiday Party, Stage Tasting to Booked, Lead Captain to Dana

Tables · NocoDB

A CRM in your pocket, modeled on a real catering business

  • Any base: a list, a drag-and-drop board on any select field, and auto-built charts.
  • A typed editor with select chips, dates, star ratings, and tap-to-call or tap-to-email.
  • Tell it what changed. Hold the mic and say "Summit Bank tasting went great, book it, Dana captains." You get a diff to review, and tapping Apply writes it back.
  • Works offline from the last sync, and says so.
A Supabase table, Catering Inquiries, shown as a board grouped by its Postgres enum stages
Insights: 38 rows, $246K total budget, budget by stage chart

Tables · your Supabase app

Your Supabase app's data, with your security rules

  • Sign in as a user of your own app, not an admin. The phone never holds a service key.
  • Every read and write carries that user's token, so row-level security decides what each teammate sees. The demo table is scoped per team.
  • Postgres types map to the same UI: enums become board lanes, and money, dates and emails get proper editors.
  • Setup is one read-only SQL helper that lists the tables the signed-in user can already read.
Grafana Cart Service dashboard redrawn as native line charts
Alerts inbox: 23 firing, 1 pending, critical first, with a Triage button

Dashboards · Grafana

Charts redrawn natively, plus an on-call inbox

  • Each panel's query is replayed through Grafana's datasource API and drawn with Swift Charts you can scrub. Anything it can't replay falls back to a server-rendered image.
  • Alerts shows what's firing, critical first. Triage asks the AI what on-call should look at first.
Metabase E-commerce dashboard: stacked revenue by category, orders by category lines
GitLab merge request with an AI brief: what it does, risk, what to check

Analytics · Metabase  ·  Code · GitLab

BI you can read on a phone, and code review between meetings

  • Metabase dashboards and tabs, with every question redrawn natively: KPIs with trend, lines, stacked bars, pie, funnel, scatter and tables.
  • GitLab merge requests, issues, pipelines and diffs, plus a 30-run CI health strip. Summarize this change tells you what it does, how risky it is, and what to check.
Excalidraw board generated from NocoDB: an events pipeline wall with sticky notes per stage

Whiteboard · Excalidraw

Your data, drawn

  • Map my database turns every NocoDB base and table into a hand-drawn entity map.
  • Pipeline wall turns your deals into sticky notes, one lane per stage, ready for a planning meeting.
  • Full open-source Excalidraw for editing. Boards save on the phone and export as standard .excalidraw files.
  • Also on the phone: a home and lock screen widget, and Siri ("What's booked next in OpenDesk?").

Teams

Admins set it up once. Everyone gets the same app.

Admin
  • Creates the team and connects the tools
  • Publishes the connections to the team
  • Invites by 6-letter code, link or QR
  • Promotes, demotes and removes members. The last admin can't be removed.
Member
  • Signs in with an email link or password
  • Joins with the code, and every tab fills in on launch
  • Sees Supabase rows their account is allowed to see
  • Can leave the team at any time
Under the hood
  • Supabase Auth, Postgres, and row-level security on every table
  • Members can read the shared setup but not change it; strangers see nothing (tested)
  • Sessions stored in the iOS Keychain

How it works

A thin native client over APIs these tools already have

iPhone · OpenDesk

SwiftUI + Swift ChartsiOS 26
Apple Intelligence + Speechon device
WidgetKit · App Intentswidget · Siri
Claude (optional)bring your own key
→plain REST
with each user's
own credentials

Your existing, unmodified servers

NocoDBself-hosted or cloud
Your Supabase appRLS as the user
Grafanaany instance
Metabaseself-hosted
GitLab.com or self-managed
Excalidrawopen-source web app

The on-device model is small, so it gets three constraints: the app narrows the table to the few rows an instruction plausibly names, passes each select column's allowed values, and lists the existing names for short-vocabulary columns. A person reviews every write.

Why a phone app

Things a browser tab can't do

The web UIs of these tools already exist. What was missing is everything that only works when the app lives on your phone.

Built
  • Siri: "What's booked next in OpenDesk?"
  • Voice edits: hold the mic, say what changed, review, apply
  • Widgets: pipeline value and next events on the home and lock screen
  • Live notifications: a teammate moves a deal and your phone buzzes
  • Offline: keeps working at a venue with no signal
  • On-device AI: answers without your data leaving the phone
Next
  • Live Activities: an event-day countdown in the Dynamic Island
  • Interactive widgets: "Mark booked" or "Silence alert" without opening the app
  • Push when the app is closed: Supabase Edge Functions through Apple's push service
  • Shortcuts automations: arrive at a venue and today's event opens
Later
  • Camera: scan a business card into your CRM, photograph setups onto an event
  • Maps: travel time to load-in
  • Face ID: lock client data
  • Calendar and Apple Watch: booked events in your calendar, alerts on your wrist

Extend it

Your tool isn't here? Fork it and ask your coding agent.

OpenDesk is open source, and every tool is the same small pattern: a REST client plus a couple of screens. The repo ships an AGENTS.md that teaches a coding agent that pattern, so adding Twenty, Plane, Zammad, Baserow or your in-house tool is a conversation, not a project.

2Tell your agent what you useClaude Code, Cursor, anything that reads the repo.
3Build and installIt adds the client, screens, settings, a Home tile, team sync and AI context, then checks them in the simulator.
You, to your coding agent Add an OpenDesk connector for Twenty CRM at https://crm.mycompany.com. Follow AGENTS.md.

For table-shaped data it's even shorter: implement one TableSource, and the list, board, charts, editor and voice edits all come for free. That's how the Supabase connector was built.

Demo script

Two minutes, on stage, on a real phone

1
Home: four tools, all green."Six open-source tools, none with a phone app. Now they're one app."
0:00
2
Tables → Events → Board. Drag a card, then hold the mic: "Summit Bank tasting went great, book it, Dana captains.""This model runs on the phone. The client list never left it."
0:15
3
Import: AirDrop a CSV and import it. Its columns and types come through."This is the day-one problem, solved in the app."
0:40
4
Team: show the QR. A friend scans it, signs in, and sees the same tables."The admin sets it up once, and everyone gets it, with row-level security."
1:00
5
Dashboards → Alerts → Triage, then Analytics."It's 2am, you're on call, and you have the answer before you find your laptop."
1:25
6
Whiteboard → Pipeline wall, then Siri: "What's firing in OpenDesk?""And if your tool isn't here, fork it and tell your agent."
1:45

Why it matters

Who it helps

Teams on open source

  • Day one works: connect, import, invite, and the whole team is on the same app.
  • Private by design: AI runs on the phone, tokens stay on the device or behind row-level security, and there's no relay in between.
  • Frontline work: caterers, field sales and on-call engineers get the tool where the work happens.

The projects themselves

  • A mobile client for free: it uses each project's public API as it is, with nothing to merge or maintain on their side.
  • Closes the gap self-hosters had against SaaS tools like Airtable, Datadog and GitHub, which is a good phone app.
  • A shared pattern: the clients can ship as Swift packages each project could adopt.

Next

Where it goes from here