AllAddin

AllAddin vs pyRevit

pyRevit is the AEC community's most widely-used Python scripting host for Revit. AllAddin is an AI agent that generates Revit API code from plain-language requests. They answer different questions; they coexist comfortably on the same machine.

About pyRevit: open-source, mature, maintained by Ehsan Iran-Nejad and a community of contributors including Jean-Marc Couffin. It is the load-bearing tool for thousands of Revit developers and the foundation a lot of practical Revit automation runs on. This comparison is descriptive, not adversarial. AllAddin is built on top of similar Python infrastructure (IronPython) and inherits a debt to the same ecosystem.

What each one is

pyRevit

A Python scripting host for Revit. Installs as an extension (now Autodesk-ribbon-native in recent versions). You write .py files in folder structures that pyRevit turns into ribbon buttons. Hot-reload on file save means rapid iteration.

Strengths: huge ecosystem of community-built tools, established conventions, broad version coverage, mature debugging story, install-once-push-updates pattern that influenced AllAddin's own auto-update path.

AllAddin

AI cooperator agent that lives inside Revit as a chat panel. You ask in plain language; AllAddin writes IronPython 3.4 or C# code on demand and runs it inside the active document. Successful patterns can be saved as one-click ribbon buttons.

Strengths: no scripting knowledge required, automatic retry on failure, execution-verified corpus that compounds across the user base, marketplace of pre-built extensions, signed installer with documented trust posture.

The mental model that matters

pyRevit is a platform for writing your own tools. The output is reusable scripts that you (or your team) author and own. The friction is "write the script."

AllAddin is a tool that writes tools for you. The output is either a one-shot operation done in the model, or a ribbon button that AllAddin created from your description. The friction is "describe the task."

When to use pyRevit

When you have a Revit developer who already writes Python and wants to commit their tools into a versioned bundle. When the tool needs to run identically on every machine in the firm via a managed pyRevit extension repo. When you want full control over the script and to read every line of what runs against the model.

When to use AllAddin

When the request is novel and you do not want to write a script from scratch every time. When the team includes people who do not write Python. When you want execution-loop telemetry on what works (which patterns succeed, which fail) accumulating across the user base. When you need both Python AND C# generation from the same agent.

Can they coexist?

Yes. AllAddin and pyRevit install independently and both can run in the same Revit session. AllAddin generates code that targets the Revit API directly - the same API pyRevit scripts call. If AllAddin writes a useful pattern, you can copy it into a pyRevit .py file and own it from then on. AllAddin's tool-creator one-click ribbon-button flow is a complement to pyRevit's bundle model, not a replacement for it.

What is shared

The Revit API. IronPython 3.4 (the Revit-embedded Python runtime both rely on). The same audience of Revit developers tired of writing FilteredElementCollector boilerplate. A respect for the AEC professional doing real work.