rbbrbb
AboutProjectsGamesBlog

Building automation / Open source canvas

Lemni

GitHub ↗

A ground-up rebuild of basdraw as a hub for everything about a facility, built on a stripped-down tldraw SDK.

Status
In development
Year
2026
Role
Design + development
Built with
TypeScript · React · Next.js · tldraw SDK · shadcn/ui · MCP · BASidekick Stream
One board for a facility: drawings, documents, live graphics and notes on one canvas. The station in these images is simulated, and the school is made up.

Starting over

I posted about basdraw a while back, a tldraw-based app where ordinary canvas objects could react to live Niagara points. Lemni is the same idea started again from zero. This time the tldraw SDK is stripped down further so the canvas fits the job instead of the other way round, and it has a new name.

The intent is an overall hub for a facility. Drawings, sequences, points lists, live graphics, markup and notes live on one endless canvas, connected to each other and to the building automation system. You can use as much or as little of it as you want, connect it on your canvases, build your own interfaces, or just use it as a whiteboard.

It is still very much an exploratory project, not a product at this point. But I'm very bullish on it as a solid base to build on going forward, and there is a lot of possibility left in it.

What's in it now

Documents on the board

PDF drawing sets and Word documents become compact cards you page through in place; spreadsheets and CSV points lists become tables. Files are kept inside the board, so the job's paperwork travels with it.

A sequence of operations as a card you page through, next to the drawing set and points list.

A real whiteboard

Pen, sticky notes, arrows and shapes work anywhere, including right on top of a drawing, so markup and questions stay with the sheet they are about.

Markup right on the drawing: a question about a sensor that isn't in the station yet.

Page categories

Pages sit in categories in the top bar, and a category's kind decides which tools apply: documents, UI pages for graphics, or the generated wire sheet. You can add your own, like Commissioning, that work like either.

Adding a Commissioning category that works like Documents.

Plugins all the way down

Past the core canvas, every feature is a plugin you can switch off: documents, pen and shapes, the libraries, charts and tables, behaviors, links, web views, the station connection and the AI connection. Niagara through BASidekick Stream is the first data connection; others are intended, and being able to write your own plugins is the plan.

Symbol and data libraries

Libraries come from plugins too. The symbol library is HVAC and BAS equipment with ports, flips and live states. The data library holds trend charts, stat tiles, gauges and tables, and dragging a point in from the station offers the right one.

The symbol library plugin, dropping a damper into a zone graphic.
Station points dragged in become a stat tile, a gauge and trend series.

Behaviors

Drop a station point on any shape to make it live: symbol state, color, level, labels, rotation, motion or flow. Present mode hides the editor and leaves a working graphic.

A damper symbol bound to its live position.

Links and the wire sheet

You can link pretty much anything to anything: a device or point in the station, one page of a drawing set, a document, a frame on a graphic, a whole page. Each link carries whatever context you want to give it, in your own words, with no structure required. The wire sheet is generated from those links and shows how everything connects, with each comment on its wire. Tags give an AI a little context about a point; this gives it, and the next person on the job, the rest of the story: which drawing a device comes from, which graphic shows it, and why. None of it needs a visual: a link can be nothing more than context for an AI. But I think a hybrid interface like this, where the same information is equally there for the person, will be the norm for a while.

A drawing page linked to the station device and to the graphic, each link with its own comment.
The wire sheet: device, drawing and graphic, with the comment on the wire.

Quality of life

I'm aiming for small things that add up and an interface that's intuitive throughout. Drag a point out of the station onto the board and a menu asks what it should become: a chart, tile, gauge or table; a symbol that already animates from it (a fan for a fan status, a damper for its position); or a control. Drop a whole equipment folder and you get a panel or a table of it. Drop a point on a shape and it's ready to drive it. Each plugin's options can be hidden from that menu if you don't use them.

Drag a point out and choose what it becomes. For a fan status, the fans are suggested and each one comes with its animation already bound.

Bring your own AI

There is no built-in assistant and no API key held by the app. Lemni runs an MCP server, so the AI app you already pay for (Claude Code, Claude Desktop, Codex) connects to the open board. Plugins contribute its tools, so it can read documents, build and lay out graphics, bind points and link things, and potentially help with controlling data: any write to the station waits for Allow once and an are-you-sure in the board, and is audited. It uses what you already have, works with any MCP app, and does nothing until you connect it.

Choose what AI apps may do, then connect the one you already use.
A station write proposed by Claude Code, waiting for Allow once and a confirmation.
The graphic a real Claude Code session built from the BAS-201 drawing, presenting live.

What's next

More plugins

More widgets that are useful day to day, and making it easy for anyone to build their own.

More data connections

Niagara is the first. Other connections are intended, each as its own plugin.

Standalone graphics packages

Export selected graphics as a simple standalone web app. Grab the few pieces a facility user actually needs and hand them a quick, tailored set of graphics without the rest of the board.

A full AI audit log

An easy way to look back at everything an AI was involved in on a board: what it read, what it changed, and every write you approved.

A floor plan turned into a live UI page.

←  All projects

QA GraphicsBASidekickEmailXLinkedInGitHubYouTube