Docs, Local APS LLM and Parallel Task Orchestration

More API online docs, run free local open-source LLM queries on your BIM, and orchestrate add-ins in parallel on multiple servers:

By the way, The Building Coder was selected by feedspot as one of the Top 25 Revit Blogs. Thank you for the recognition, even if the list does look rather arbitrary to me...

RvtDocs Revit API Documentation

After a long lack of online API documentation for Revit 2025, we suddenly have a whole collection of choices, and competition is increasing.

The newest candidate is from Erik Frits of LearnRevitAPI, who launched yet another Revit API documentation website:


RvtDocs

Welcome to the pack!

Here is an overview of the choices that I am aware of to date:

Erik Gette on Debugging and Parallel Task Orchestration

Erik Gette of Strana Development, ГК Страна Девелопмент kindly shared several in-depth tutorials on Revit and Navisworks debugging and parallel task orchestration:

The debugging suggests an interesting approach using the journal file to launch Revit in the debugger:

The Runner.txt file is a VBA script (Revit journal) that allows executing specific commands in Revit upon startup. Essentially, it can be used to trigger any sequence of actions automatically. In the context of my article, this file is used to launch Revit without any third-party plugins, ensuring a clean environment for testing and debugging. Interestingly, Revit generates similar log files for each session. These files can be read and analyzed, which opens up a range of automation possibilities. For example, in our workflow, we use these logs to orchestrate 10 running instances of Revit to export over 5,000 files into NWC format efficiently. The use cases for this approach are vast, and I plan to explore them in more detail in future articles. Stay tuned! 😊

Thank you, Erik, for your valuable research and documentation. I'll share the Revit orchestration article here in full; please refer to Erik's LinkedIn publications for the others:

Revit Parallel Task Orchestration on the Server

In large-scale BIM projects, it is often necessary to perform the same operations on multiple models. This could include exporting models to various formats (NWC, IFC), extracting data for further analysis, or even more complex tasks related to automated model processing.

When the number of models grows too large, performing these operations manually becomes inefficient and, in the case of working with Revit and Navisworks, also resource intensive. The optimal solution is to organize server-side orchestration of these processes, where tasks are executed automatically based on a predefined scenario.

In this article, we will explore how to set up process management for Revit on a server to execute BIM tasks in batch mode. This approach allows you to:

Orchestrating these processes on the server significantly reduces processing time, eliminates human errors, and makes working with models more predictable and manageable.

Task Queue Controller – Server API Layer

This controller is a simplified API example that manages a task queue in the server’s memory. The main goal is to demonstrate how tasks can be added and retrieved using ConcurrentQueue.

Revit Parallel Task Orchestration on the Server

How this controller works:

Limitations of this approach:

What to use in a real project?

For reliable task processing, message brokers are recommended:

If you need to integrate RabbitMQ or another broker into this project, feel free to reach out to Erik.

RevitRunner Class Overview

The RevitRunner class is used to launch Revit with a journal file. This journal file can contain commands for automating tasks such as exporting NWC files or performing other operations.

🔹 How It Works?

Revit Parallel Task Orchestration on the Server

Step 1: Creating the Manifest File

Before we move on to executing Revit processes, we need to configure and develop a Revit plugin.

The first step is to create a manifest file for our command. This file defines the parameters and settings for the plugin. It tells Revit how to load and execute our command, ensuring it integrates properly with the Revit environment.

Revit Parallel Task Orchestration on the Server

Step 2: Updating the Journal File

Next, we need to call our command inside the journal file (Runner.txt). This ensures that Revit executes the plugin correctly when launched.

⚠ Key point: The command ID in the manifest file and the journal file must be the same. This consistency is crucial for proper execution and debugging.

By maintaining this synchronization, we ensure that Revit picks up and runs our automation script without issues.

Now, let’s configure the journal file and see how it integrates with our command! 🚀

Revit Parallel Task Orchestration on the Server

Step 3: Implementing the Command

After setting up the manifest and the journal file, the next step is writing the external command that will execute tasks inside Revit.

The RevitCommand class implements the IExternalCommand interface, which allows it to be executed within Revit. It runs in an infinite loop, constantly checking the server for new tasks. When a task is found, it is processed accordingly.

Revit Parallel Task Orchestration on the Server

How the Command Works:

By implementing this method, you can significantly reduce manual effort, improve efficiency, and ensure consistency in your BIM processes.

Step 4: Setting Up the Development Environment

To streamline development and debugging, a profile has been created that allows you to run both the server and the client simultaneously. This setup makes it easier to:

With this configuration, you can fine-tune your Revit automation workflow and optimize task execution seamlessly. 🚀

Revit Parallel Task Orchestration on the Server

Convenient API Access with Scalar

In this test project, Scalar is used to simplify API interactions. It provides a clean and efficient way to work with the task queue. With Scalar, you can easily:

This makes the orchestration process more manageable and scalable, ensuring a seamless workflow for handling Revit tasks on the server. 🚀

Revit Parallel Task Orchestration on the Server

Step 5: Parallel Execution on Multiple Revit Instances

Now, let’s move on to the most exciting part—running our tasks in parallel on multiple instances of Revit. To make the server configuration more flexible, we first need to update the appsettings.json file by adding fields that will allow us to:

This approach ensures that tasks are distributed efficiently across multiple Revit processes, significantly reducing execution time and improving overall performance. 🚀

Revit Parallel Task Orchestration on the Server

Step 6: Creating a Class for Managing Revit Instances

Now that we've set up the configuration, the next step is to create a class that will launch Revit instances on the server side. This class will be responsible for:

With this setup, we can now use our API to enqueue an unlimited number of tasks, and they will be processed in parallel by three Revit instances. This approach ensures efficient workload distribution, minimizing idle time and optimizing execution speed. 🚀

Revit Parallel Task Orchestration on the Server

We should also remember to register our service:

builder.Services.AddHostedService<RevitBackgroundService>();

Conclusion

Now we have the ability to batch-run tasks that can only be executed in the context of Revit. This can significantly increase the productivity of the BIM department, as it allows us to integrate existing plugins into this logic and batch process large volumes of models on the server machine.

In the following articles, I will elaborate on how to implement a similar approach with Navisworks, which will expand our capabilities in automation and integration with other tools.

If you have any questions about collaboration or would like to discuss potential opportunities, feel free to reach out to me on Telegram. I look forward to connecting with you! Let me know if you need any adjustments!

Local Ollama LLM APS Metadata Querying

Chuong Ho published a one-minute video on Ollma3 LLM Agent APS WSL System (Autodesk Platform Services):

Exploring Open Source & Local LLM Ollama for Design Metadata Querying in Autodesk Platform Services!

I'm excited to share my recent experiment with an open-source project that brings Local LLM AI and Autodesk Platform Services (APS) together! You can choose any model from your localhost with free AI open source model, and use this chatbot for a wide range of purposes! This is just the first version of my hackathon project, and I’m excited about how it turned out. A huge thanks to Petr Broz for the repository and inspiration!

Check out the video below to see the real-time speed response using LLM on a local machine with WSL. It's fascinating how fast and efficient the response time is!

aps-local-chatbot GitHub repository

Simple chatbot for querying metadata of designs in Autodesk Platform Services using Ollama for chat completion. This project connects a powerful local LLM with zero cost into Autodesk Platform Services.

Many thanks to Chuong Ho for implementing and sharing this exciting innovative project.

Ollama LLM with APS and ACC

Moore's Law for Agent Autonomy: 7 Months

Moore's law for agents: autonomy doubles every 7 months, cf. the paper on Measuring AI Ability to Complete Long Tasks.

Moore's law for agents: autonomy doubles every 7 months

Figure 1: The length of tasks (measured by how long they take human professionals) that generalist autonomous frontier model agents can complete with 50% reliability has been doubling approximately every 7 months for the last 6 years. The shaded region represents 95% CI calculated by hierarchical bootstrap over task families, tasks, and task attempts. Even if the absolute measurements are off by a factor of 10, the trend predicts that in under a decade we will see AI agents that can independently complete a large fraction of software tasks that currently take humans days or weeks.

At current rates, we will have:

Conversational Voice Generation

Non-Revit-related yet interesting to try out yourself, this conversational voice generation and simulation demo highlights Sesame – crossing the uncanny valley of conversational voice:

At Sesame, our goal is to achieve 'voice presence' – the magical quality that makes spoken interactions feel real, understood, and valued.