Selkie is an AI-assisted diagramming tool designed for users who prefer declarative configuration over manual drawing. It uses a domain-specific language (Mermaid) to define diagram structures, with AI providing intelligent scaffolding during the early stages of creation. Selkie streamlines the transition from concept to structured output, supporting workflows where diagrams are shared, versioned, or refined manually.
The idea of Selkie is to help you start quickly and think clearer without getting stuck in the layout and nuances.
This blog post tracks the progress of creating the app itself.
By the way, I have written about creating diagrams earlier in Why Creating Diagrams is Hard (and How PlantUML/Mermaid Can Help).
I have had the idea for quite some time, but only yesterday I started working with it. I decided to approach the project so that I will first aim to create e2e working example so I can actually get the feeling of how the app works and if it makes sense at all. I was able to make the first version in few hours by using an existing Javascript-based full-stack template I had prepared earlier for projects exactly like this. The template is called cito-starter
(not publicly available) and consists Angular frontend and NodeJS backend. In case of Selkie the backend does the API calls towards OpenAI. See first render of the UI below:
The first version does the following:
Responses API
which is currently in beta.Regarding the name "Selkie": the idea is derived from "Mermaid". Wikipedia describes Selkies as "mythological creatures that can shapeshift between seal and human forms by removing or putting on their seal skin". In Finnish "Selkeä" means "clear". Not sure if this has wings, but I think one of the main functions of any diagram is to convey information and make things clearer.
Next, I will focus on the UI design, visual aspects and interaction design.
Second iteration is under way. I replaced my custom code editor (contentEditable div) with Monaco. I also added some tweaks to frontend to make the idea a bit more iteratable. Some current topics on the table:
Below is the latest UI:
Second iteration is now done. I haven't had time to focus on improving LLM functionality yet, but main functionalities are usable end-to-end. Diagrams are stored to database. Editing works and the development-time usage can start. The project itself can also be tracked with the app itself. Some of the recent work included:
Below is the second version UI:
The work continues on refactoring the project e2e. After that it will be deployed to virtual machine for public access and prepared for development phase that focuses on LLM logic. Third version planned content will be shaped as the idea marinates and matures.
Below is the final version of the second version UI:
The applicaton is now running in: https://concept.directory/
Second iteration got some minor adjustments before deploying to the public domain. The changes include:
On top of application changes I spent sime time hardening the nginx configs and adjusting scripts for deployment.
Below is the deployed version in light and dark.
Third iteration is now in progress. I have been refining the current version to work for home and work notes. LLM improvements are still waiting to get worked on. Recent work includes:
Below is the ongoing third version of the UI:
The Selkie project itself is tracked with the Selkie. Next items on the project's Gantt looks like this:
I have spent the past days on working on yaml-based syntax. The idea is to support custom yaml-based syntax for note taking. The major reason is have consistency in structure, better parsing and proper pre-computations before sending the content to Mermaid.
Currently I have added support for the following: