Welcome to the forest.

Artificial intelligence is like an axe. Using one without the necessary experience is hard, even dangerous, but it makes you feel powerful. As experience is gained, the more precise and effective its use becomes. It’s up to you how you use it. This sense of empowerment comes at a cost: skipping the training and go straight to chopping. And so, we forget how to use the axe itself.

It is fundamental to analyze, comprehend and protocol the use of data, both used between BIM applications and outside their realm. Not knowing the fundamentals of artificial intelligence, on a very general way, makes its use irresponsible. Fundamentally, we need to work on our primitives.

What is data? What does AI mean to us?


📝 TL;DR

This framework proposes a single cohesive approach to talk between BIM models and/or AI models. It translates data into a common language, interoperable with any software that implements this protocol. By normalizing information, it won’t matter which AI model or software version you use, it will just work.


🤔 Theory of Operation

There are very simple answers to the questions mentioned above. The AI models we use work by predict the next word we will type, based on statistics and algorithms, using the information we feed these models with. Using these primitives, models can become tools that comprehend our natural speech to perform these tasks. They understand us. This knowledge, alongside interfaces that harness the power of this model, becomes a tool to assist, generate and check.

During this whole process, data flows back and forth, alongside metadata about how, when, where and what is flowing. This data must be processed, cleaned, and stored for it to be useful.

Direwolf provides a way to obtain, process and transmit this information, in such way that is both compliant with industry-standards and bespoke to BIM requirements.

🐺 Direwolf, Wolfden, Wolfpack and Hunter

Direwolf coordinates and obtains Wolfpack messages inside Wolfden to be transmitted and received by Hunter. An API host, database, protocol and server; respectively. In essence, this architecture mirrors what a Web server is, at an application’s scale.

  • Direwolf connects directly with its host’s APIs (for example, Autodesk Revit), acting as a mediator between the “inside” (the API), and “outside” (Direwolf).
    • It also handles all data processing requirements to have usable data at this level of the chain. Whether is raw or clean data, it is Direwolf’s task to deal with it.
  • Wolfden stores all the information generated by Direwolf inside a RAM-based cache. It uses its own kind of unique identifier, a CUID, to tag, track and retrieve information.
    • It exposes four API’s: create, read, update and delete. Nothing more.
  • Hunter is a server based on a hybrid architecture (REST and JSON-RCP2.0) that communicates Direwolf with a network: local or on the Internet.
    • It has its own RAM-based cache, useful to process data before passing it onto Wolfden.
    • Its hybrid nature comes in the way of a translation layer, where RPC2.0 endpoints are exposed to the Web and, on the inside, they have access to the same API as Wolfden. The database is never exposed raw to the exterior.
  • Wolfpack is the common language of all operations, both inside and outside the Direwolf ecosystem.
    • Wolfpack messages present on any of these three entities are compatible with MCP (Model Context Protocol). This is the common language between LLMs (AI models).
    • A Wolfpack message can also carry data to and from any kind of software, mainly designed for the BIM realm.
    • It has a URI schema (like a website link, but specialized) to uniquely identify any property, element, parameter, task or concept available on the entire AEC world.
    • It implements its own unique identification schema based on Collision-resistant Unique Identifiers, or CUID.

🪪 CUID

One of the most important innovations of Wolfpacks are the CUID. They balance the uniqueness and safety of a UUID, yet it implements encoded metadata, saving storage and adding a tag system.

However, it is not meant to be cryptographically secure. It is based on CUID v1, and in some implementations, it uses the fingerprint and counter field to store metadata (like Autodesk Revit). This implementation has security vulnerabilities. For secure operations, CUID v2 is recommended.

A CUID has four (4) parts:

  • A timestamp
  • A counter
    • In Autodesk Revit, it encodes the unique identifier of the current file version as a Base36 truncated value.
  • A fingerprint
    • In Autodesk Revit, it encodes the Document’s Creation GUID as a Base36 truncated value.
  • A random string, of variable length.
    • In the case of Direwolf, the default is a 16-character long random string.

🌐 URI

Wolfpack implements a system based on Unique Resource Identifiers (URIs) to create a virtual path to access any kind of resource inside an API. The schema follows this pattern:

 wolfpack://[developer hostname, in reverse domain format]-[version tag]/[hierarchical]/[path]/[to]/[object]?[an operation identifying character]=[operation, without spaces, as lower]/

Where the hostname's reverse domain schema follows this example:

wolfpack://com.appname.manufacturer-version/
wolfpack://org.standariztionbody-standard.name/
wolfpack://std.standardname-version/

Where std is shorthand for standard.

This taxonomical system proposes a familiar, proven and extensible schema to address anything, anywhere, no matter the implementation behind.

⚙️ Processing

In a future blog post, I will detail the engine’s theory of operation. At blazingly fast speeds, it can hunt hundreds of thousands of records in milliseconds, serialize an entire Revit document in less than a second, or create a ready-to-go MCP prompt to query an AI model at any stage of the process: frontend, database, web server—anything.


Run through the forest

💽 The software

This is not a finalized product, nor it will provide much more than just a JSON. Direwolf is a very technical project in nature, therefore it will take a while until a usable product exists.

What is here, is an API to interact with Direwolf and all its components. Feel free to fork this repo and have some fun with it!

⚠️ Disclaimer

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. And I am not responsible of misuse of your API key.

☑️ Prerequisites

This repository contains a proof of concept for:

  • Direwolf Engine for Revit (2025 and up).
  • Definitions for both Direwolf and Revit.
  • Revit frontend with a series of tests.

To compile, you need:

  • Rider or Visual Studio
    • This was developed with Rider, so it might produce better results.
  • Autodesk Revit (2025+)
    • Needed to compile Direwolf.Revit.dll
    • Implements Nice3point NuGet packages for dependencies.
    • Direwolf is independent of the plugin that implements it. All it cares about is that you pass a Document as a parameter. It can run both inside an Application or a Command.

To use, you need:

  • Autodesk Revit (2025+)
  • The Direwolf.Revit.dll and its manifest file installed (instructions below).
  • Claude Desktop and your API key.

👨‍💻 Available demos

The tests available are:

  • Serialize the whole document as a Wolfpack, directly from the Document, to JSON.
  • Serialize the whole document as a Wolfpack, directly from the Wolfden (the RAM-based cache), to JSON.
  • Serialize the currently selected element's data to JSON.

😶‍🌫️ What is not available

  • MCP integration.
    • The server still needs some work, mostly related with some bugs in the implementation.
    • It might be spun off the C# codebase to use a TypeScript-based stack. It is much easier this way, than doing it 100% C#.
  • Schedules integration.
    • Needs more debugging.

🔨 Support

Click here to access the GitHub repository.

This is just a conceptual protocol. It is not ready for any production environment, and I am not responsible for its use on production Documents or bricking a Revit installation. However, if you do, I’d love to hear from you by submitting an issue on this repository. I can’t test every single edge case or platform.

If you’re interested in Direwolf, feel free to create a fork of this repository and play with it! If you want to support the project, you can submit a pull request. This is a passion project I want to share with the world. And if there’s interest for it, I’m glad to help make Direwolf a complete platform.