I'd like to show you ProjecturEd, a projectional editor I've been working on.
It's an application to view and edit structured data. You can define your own data structures and your own views for them. They work together with the domains that come with it, like JSON, Markdown, Julia code, widgets and charts. An AI assistant works with you on the same data and the same views. You can also use it as a user interface for your own Julia programs.
It's not yet finished, but most of it works. I think it's ready to show, and I'd like to get some feedback.
So, I started ProjecturEd in Common Lisp in 2013 (a long-long time ago) as a side project. I was interested in editing structured data because almost always it ends up as editing text. I wanted to look at and change the structured data itself using the keyboard and mouse. Now, thanks to AI software development is entirely different now. I created the Julia version (in 4 months part-time) for a new port of a well known and widely used discrete event communication network simulator (OMNeT++). It's a complete rewrite, with many more domains, more backends and the AI assistant built-in from the ground-up.
Here is a demo video, where a local AI agent builds a study of an M/M/1/K queue from seven user requests using the application's internal API. It writes the model and the formulas, runs OMNeT++ simulations, plots the results and finds the answer. The model is qwen3.8:27b in Ollama, on my machine. The OMNeT++ tool in the video is built on ProjecturEd, but its code is not public.
Here is how it works, in short. The structured data is the source, and every view is computed from it. A projection (a composite one) turns the structured data into a view. It also turns your edits in the view back into typed operations on the structured data. Projections can be combined in many ways e.g. chaining, recursively, type dispatching. For example JSON goes to syntax recursively, then from syntax to text recursively, then to graphics. Many other combinations and mixtures are possible. Every data structure field is a reactive cell, the editor is lazy and incremental. A computed value stays until something it depends on changes. What's not on the screen is not computed, and a view never shows stale data.
The most important part for me is that you can add your own domain. A domain is a package with its document types, projections, operations and key bindings. Navigation, search, copy and paste, sorting, filtering, files, mixing with other domains, all the backends and the assistant work with it, with little or no extra code. The whole JSON domain is a few hundred lines. The web page shows how it's built.
The assistant runs Julia code inside the editor, so it uses the same API as you do. It can search the API by name, by pattern or by meaning. It can also open tabs and arrange the window. You can undo its changes with Ctrl+Z, like your own. By default it uses a local model through Ollama, but it also works with Claude. Other AI tools can use the same tools through MCP. Note that it's not a sandbox, and the MCP server has no authentication. Please don't run it on a shared machine.
ProjecturEd also comes with its own Julia REPL. You open it in a tab and type Julia, like in the normal REPL. But a result that is a viewable data structure or a picture shows as itself, not as text. And you can edit it right there.
I'd like to show you ProjecturEd, a projectional editor I've been working on.
It's an application to view and edit structured data. You can define your own data structures and your own views for them. They work together with the domains that come with it, like JSON, Markdown, Julia code, widgets and charts. An AI assistant works with you on the same data and the same views. You can also use it as a user interface for your own Julia programs.
It's not yet finished, but most of it works. I think it's ready to show, and I'd like to get some feedback.
So, I started ProjecturEd in Common Lisp in 2013 (a long-long time ago) as a side project. I was interested in editing structured data because almost always it ends up as editing text. I wanted to look at and change the structured data itself using the keyboard and mouse. Now, thanks to AI software development is entirely different now. I created the Julia version (in 4 months part-time) for a new port of a well known and widely used discrete event communication network simulator (OMNeT++). It's a complete rewrite, with many more domains, more backends and the AI assistant built-in from the ground-up.
Here is a demo video, where a local AI agent builds a study of an M/M/1/K queue from seven user requests using the application's internal API. It writes the model and the formulas, runs OMNeT++ simulations, plots the results and finds the answer. The model is qwen3.8:27b in Ollama, on my machine. The OMNeT++ tool in the video is built on ProjecturEd, but its code is not public.
https://projectured.org/assets/videos/queue-study.mp4
Here is how it works, in short. The structured data is the source, and every view is computed from it. A projection (a composite one) turns the structured data into a view. It also turns your edits in the view back into typed operations on the structured data. Projections can be combined in many ways e.g. chaining, recursively, type dispatching. For example JSON goes to syntax recursively, then from syntax to text recursively, then to graphics. Many other combinations and mixtures are possible. Every data structure field is a reactive cell, the editor is lazy and incremental. A computed value stays until something it depends on changes. What's not on the screen is not computed, and a view never shows stale data.
The most important part for me is that you can add your own domain. A domain is a package with its document types, projections, operations and key bindings. Navigation, search, copy and paste, sorting, filtering, files, mixing with other domains, all the backends and the assistant work with it, with little or no extra code. The whole JSON domain is a few hundred lines. The web page shows how it's built.
The assistant runs Julia code inside the editor, so it uses the same API as you do. It can search the API by name, by pattern or by meaning. It can also open tabs and arrange the window. You can undo its changes with Ctrl+Z, like your own. By default it uses a local model through Ollama, but it also works with Claude. Other AI tools can use the same tools through MCP. Note that it's not a sandbox, and the MCP server has no authentication. Please don't run it on a shared machine.
ProjecturEd also comes with its own Julia REPL. You open it in a tab and type Julia, like in the normal REPL. But a result that is a viewable data structure or a picture shows as itself, not as text. And you can edit it right there.
- Web page with more videos: https://projectured.org
- Code and guides: https://github.com/projectured/projectured-julia
It's free for noncommercial use, including modifications. For commercial use you will need a licence from me, though it's not advised right now.
I'm happy to answer any questions.