projects › main
Neh-Thalggu
A DSL management system.
Originally Neh-Thalggu was an MCP server to provide Domain Specific Languages to a coding agent.
Instead of asking the AI to write larger pieces of code, we can pass it short snippets written in a DSL and have the agent use Neh-Thalggu to expand that into code in a deterministic way.
Now I'm working on extending Neh-Thalggu beyond just the MCP server, to be a full "language oriented programming" system. Providing DSL management, access through the command-line and skills, as well as MCP.
I believe that DSLs or "little languages" have an advantage in an age of AI assisted coding. The components of a language compiler - grammars, parsers, emitters - are well understood computer science that an LLM can now write competently. And unlike other kinds of modularity, the boundaries between languages are public. In other words, if the interface between two parts of a large and complex system are a language, then what passes between the modules is something that's relatively easy to inspect and debug.
Consider SQL as the interface between your program and a database. An SQL boundary is clean and abstract. Nothing moves between the two systems except that which can be expressed in SQL. You can inspect the database, independently of your program, simply by writing SQL by hand. It's (relatively) easy for a skilled human to read and reason about the SQL your program generates. And you can test it against toy databases. Or parse it for correctness. Etc.
Finally, consider the use of AI agents to build large systems. I believe that we can decompose the construction of the large system into a cascade of DSLs, each producing or orchestrating different components. Each individually is a smaller task that the AI can accomplish reasonably well. Because of the cleanness of the decoupling a language provides, an agent rarely needs to have the whole system in its context. Agents can work on a specific module / language.
One example of this strategy is how I am working on my "World of Cake" project. (Writing cross-platform music sequencers). This uses a layout DSL for creating the panels / UI. The sequencers are written in Haxe, which is not really a DSL, but chosen for being a higher level language that cross-compiles to other languages including C++. Hence the final C++ code for a plugin is derived from two other higher level languages through compilers. I'm already planning how I can use my wchnt language for this too.