How to Share pyRevit Plugins
Author
Brian Bakerman
Date Published

How to Share pyRevit Plugins for Teamwide Revit Automation and BIM Workflow Optimization
In modern BIM practice, Revit automation is a game-changer for productivity. Many BIM managers, architects, and engineers create custom Revit plugins (often via scripting) to streamline tedious tasks and improve BIM workflow optimization across their projects. One popular tool for this is pyRevit, an open-source Rapid Application Development environment that lets you build add-ons inside Revit using Python. In fact, pyRevit “helps you quickly sketch out your automation and add-on ideas… inside the Revit environment and using its APIs” (GitHub - pyrevitlabs/pyRevit: Rapid Application Development (RAD) Environment for Autodesk Revit®). These custom tools can dramatically reduce repetitive work – but their real power shines when you share pyRevit plugins with your entire team. By distributing your time-saving scripts to colleagues, you ensure everyone benefits from a more efficient, consistent workflow. This post will explore what pyRevit is, why sharing your plugins matters, and how to share pyRevit plugins effectively. We’ll also touch on best practices for Revit plugin development collaboration and mention emerging AI-driven solutions like ArchiLabs that take automation even further.
What is pyRevit and Why Use It for Revit Automation?
pyRevit is a popular free add-in for Autodesk Revit that acts as a platform for Revit scripting and plugin development using IronPython (Python for .NET) or C#. When you install pyRevit and launch Revit, you get a new “pyRevit” tab on the Ribbon with a suite of sample tools. More importantly, pyRevit provides a framework to easily develop your own tools and buttons that interact with the Revit API – without needing to compile a traditional add-in. According to its creators, pyRevit enables you to “write your own Revit add-ons for Revit using Python… and distribute your tools easily to your teams using a unified interface” (GitHub - pyrevitlabs/pyRevit: Rapid Application Development (RAD) Environment for Autodesk Revit®). In essence, pyRevit offers a sandbox for rapid automation: you can code a script to handle a repetitive task (like batch renaming sheets or placing annotations) and have it appear as a button in Revit for anyone to use.
Why use pyRevit for automation? For one, it lowers the barrier to entry for Revit plugin development. You don’t need to be a professional software developer or deal with Visual Studio to create handy Revit tools – a bit of Python knowledge and understanding of the Revit API is enough. This empowers tech-savvy architects and BIM specialists to tailor the software to their needs. pyRevit also promotes BIM workflow optimization by allowing teams to offload repetitive tasks to scripts. Common pain points in Revit (generating dozens of sheets, tagging every element in multiple views, exporting data, etc.) can be handled with a custom script running under pyRevit. The result is faster workflows, fewer manual errors, and more time for design and coordination.
Finally, pyRevit’s ecosystem encourages sharing and standardization. Instead of everyone writing their own little macros in isolation, a firm can develop a library of custom Revit plugins (pyRevit tools) and deploy them to all users. This ensures that best practices are codified in tools and that everyone is using the same automation scripts for consistent results. In the next sections, we’ll look at how to package these scripts as a pyRevit extension and share them with your team.
Packaging Your Custom Revit Tools as a pyRevit Extension
Before sharing a pyRevit plugin, it’s important to package it properly as a pyRevit extension. In pyRevit, an extension is essentially a collection of custom tools (buttons, scripts, etc.) grouped in a folder that pyRevit can load. You can think of an extension as your custom “plugin bundle” that can be easily distributed. Creating one is straightforward:
Set up an extension folder: First, decide on a location for your extension(s). It could be a folder on your local drive (or a network location – more on that later). In Revit, go to the pyRevit tab → Settings, and add your chosen folder path under Custom Extension Directories. This tells pyRevit to look there for any extensions you’ve created (Extensions and Commmands — pyRevit 4.5 documentation).
Create the extension bundle: Under your extensions directory, make a new folder and name it <YourExtensionName>.extension. For example, if your plugin is called "AwesomeTools", the folder should be AwesomeTools.extension. Inside that, you’ll organize your scripts following pyRevit’s structure. Each tool is a bundle – typically a folder ending in .pushbutton (for a push-button command) or .pullDown (for a dropdown menu), etc. Within each tool folder, you place your script.py (the Python script that runs when clicked), and an icon.png for the button icon (if desired), plus a bundle.yaml or extension.json if you need advanced settings. PyRevit’s documentation provides details on bundle types and naming, but a basic setup only needs the script file in the right folder structure.
Test it locally: Restart Revit (or hit pyRevit > Reload) to see your new extension loaded in the pyRevit tab. If everything is set up right, your custom buttons will appear, ready to use. Make sure the tools work as expected before you distribute the extension to others.
By keeping your scripts in a separate .extension folder, you ensure they remain independent of the core pyRevit installation. This isolation is important – it means updating pyRevit itself won’t overwrite your tools, and vice versa. In fact, pyRevit’s creator recommends storing extensions in a safe location (even on a company server) so they can be shared between teams (Extensions and Commmands — pyRevit 4.5 documentation) without everyone tinkering in the core pyRevit files. Now that you have an extension folder prepared, let’s explore the ways to share it with colleagues.
How to Share pyRevit Plugins with Your Team
Sharing a pyRevit plugin (extension) essentially means making your extension folder available to other Revit users and ensuring their pyRevit knows to load it. There are a few common methods to do this, each with pros and cons. The best approach may depend on your firm’s IT setup and how frequently the tools will be updated. Below are the primary ways to distribute pyRevit extensions:
1. Shared Network Drive
One of the simplest methods is to place your extension on a shared network drive that all users can access. For example, you might put the AwesomeTools.extension folder on X:\CompanyRevitExtensions\AwesomeTools.extension. Then, each user’s pyRevit is configured to look at that network path for extensions.
How to set it up: You can ask users to add the network folder path in their pyRevit settings (just like you did locally). Alternatively, an IT admin can push a pyRevit configuration that includes the shared path for all users. Once in place, everyone will see the custom Revit plugins appear under pyRevit when they restart Revit.
Benefits:
There’s a single source of truth for the plugin. If you update the scripts in the shared folder, everyone gets the update next time they reload pyRevit. No need to manually copy files to each machine.
It ensures consistency – nobody is accidentally using an old version, since the extension lives in one central location. As one user noted, “there is just one live version; I can fix issues and bugs nearly instantly for everybody” (Need advise on extension deployment for multiple users - Runtime - pyRevit Forums).
Drawbacks:
Initial setup requires configuring each user’s pyRevit to point to the network. Doing this one by one can be time-consuming or require a startup script (to automate adding the path).
Users need reliable network access. If the shared drive is slow or goes down, the plugin might not load or could impact Revit’s startup time (Need advise on extension deployment for multiple users - Runtime - pyRevit Forums). Performance is tied to network speed, so a poor connection can be a bottleneck.
If users are remote or off VPN, they might lose access to the extension until they reconnect to the network.
A shared drive deployment is great for a stable environment with occasional updates. It’s very transparent – you update the code in one place and everyone has it. However, as organizations grow, you might want a more robust or automated way to distribute extensions, which brings us to using version control.
2. Using a Git Repository for Version Control
For firms with many users or frequent plugin updates, leveraging a Git repository (e.g., on GitHub or Bitbucket) to distribute pyRevit extensions is a highly efficient solution. In this approach, your extension’s folder is kept in a Git repo, and users install or update the extension by pulling from that repo. pyRevit even has built-in commands to assist with this.
How it works: You (the plugin developer) maintain the extension code in a Git repository. This could be private (for internal tools) or public if you want to share with the community. Each user then “installs” the extension by cloning the repo via pyRevit. For example, pyRevit’s CLI tool allows you to run a command like:
pyrevit extend ui AwesomeTools "https://github.com/YourCompany/AwesomeTools.extension.git" --branch=main
This will tell pyRevit to download (extend ui means add a UI extension) the extension from your GitHub URL. Users can execute this in Command Prompt, or you could provide a one-click batch file for them. The above command might look intimidating, but it can be wrapped in a simple installer script. One suggested script looks like this:
@echo off
echo Installing AwesomeTools extension...
pyrevit extend ui AwesomeTools "https://<token>:x-oauth-basic@github.com/YourCompany/AwesomeTools.extension.git" --branch=master
echo Installation complete. Enjoy!
pause
(In this example, a GitHub access token is used to allow read access to a private repo. For public repos, no token is needed.)
Once installed, pyRevit will load the extension from the user’s local clone of the repo. The big advantage comes when you update the plugin: users can get the latest version by simply pulling the repo. You can even automate this – for instance, by having a startup script or instructing users to hit the “Update Extensions” button in pyRevit. Some BIM managers set up pyRevit to auto-check for extension updates each time Revit launches (Need advise on extension deployment for multiple users - Runtime - pyRevit Forums), so improvements roll out without any manual effort from end users.
Benefits:
Streamlined updates: This is arguably the best method for frequent changes. You can push updates to the Git repo, and users can pull the updates. No more emailing files or copying to dozens of PCs.
Version control: Git tracks changes, so you have a history of your plugin development. If a new update breaks something, you can revert or let users temporarily use an older branch. It brings software development best practices to your Revit plugin development cycle.
Automation: Coupled with pyRevit’s CLI, you can fully script the deployment. For example, an IT admin can run that pyrevit extend ui command on all machines or include it in a company login script. After the initial setup, updates are one-click (or automatic on Revit start).
Remote access: Unlike the network drive method, once a user has cloned the repo, the plugin is on their machine. They don’t need continuous network access to use it – only to get updates. This is friendly for remote or travel usage.
Drawbacks:
Initial complexity: Not everyone is familiar with Git. While the process is straightforward for those who are, some architects/engineers might find it daunting to run command lines. Providing a clear step-by-step or an installer batch can mitigate this.
Repository management: You’ll need to manage Git hosting. If using a private repo, you must handle authentication (tokens or credentials). Also, you should organize the repository properly (the .extension folder is likely the root of the repo).
Learning curve: There’s a slight learning curve for BIM managers to set up a scripted deployment if they haven’t done so before. However, resources and community examples are available – many have successfully deployed pyRevit extensions via Git and shared their approaches.
Overall, using a Git repository is a robust way to share pyRevit plugins, especially if you anticipate iterative improvements. It ensures every user can get the latest and greatest tools with minimal hassle. As a bonus, hosting your extension on platforms like GitHub also makes it easier to share with the wider community if you choose to open-source it in the future.
3. Manual Distribution (Copy & Paste)
If the above options are overkill for your situation (say you have a very small team or a one-off tool), you can always distribute the extension manually. This could be as simple as sending a zipped folder of your AwesomeTools.extension via email or posting it on an intranet, along with instructions on where to put it.
How to do it: The user would download the extension folder and place it into their pyRevit extensions directory. By default, pyRevit uses a folder in %AppData%\pyRevit\Extensions for third-party extensions (unless they’ve configured a custom path). So the user could drop the folder there. Alternatively, they can add any folder location via pyRevit settings as described earlier. After placing the extension, the user restarts Revit, and the plugin should appear.
Pros:
It’s very straightforward. No special tools or setup—just copy files.
Good for a quick trial or if only one or two people need the tool immediately.
Cons:
No update mechanism: If you improve the plugin, you’ll have to repeat the process (send new zip, everyone replaces the old files). There’s a risk some people won’t update, leading to version mismatches.
Effort grows with team size: Copy-pasting to 5 people is fine; doing it for 50 or 500 becomes unmanageable. You’d be back to a manual update nightmare.
Lack of central control: You don’t have oversight of who installed it or what version they have, unless you individually follow up.
Manual sharing is best reserved for very small deployments or initial testing. If you expect ongoing development or a large user base, consider the network or Git approach for sanity’s sake.
4. Company-Wide Deployment via IT
This method is more of an extension to the above strategies, but worth mentioning. If you have an IT department that manages software installs, you can work with them to deploy the pyRevit extension company-wide. This might involve:
Including the extension in a standard desktop image or as part of the pyRevit installation package for new users.
Running a script on user login or computer startup that ensures the extension is present (this script could copy from a network location or run the pyrevit extend command to pull from Git, as discussed).
Using tools like Microsoft SCCM or Intune to push the extension files to all user machines.
The benefit here is that it’s hands-off for the end users – they don’t have to do anything. The next time they open Revit, the plugin is just there. This is especially useful for large firms where expecting every user to manually set up an extension is unrealistic.
However, this requires coordination and testing. You’ll want to ensure the script runs after pyRevit is installed (since pyRevit itself needs to be present), and handle cases like when an update is available (re-run the deployment or update script). Many BIM managers start with either method 1 or 2 above and then formalize it through IT once the plugin proves its value.
Best Practices for Sharing and Maintaining pyRevit Plugins
No matter which sharing method you choose, a few best practices will help maximize the benefit of your custom plugins:
Documentation & Training: Don’t assume everyone will immediately understand your tool. Provide a brief README or user guide for the plugin – even a one-page PDF or an internal wiki entry. Explain what the tools do, how to use them, and whom to contact for support. Maybe hold a short demo session for the team. This encourages adoption and ensures users actually utilize the plugin for BIM workflow optimization rather than ignore it.
Versioning & Change Logs: If you update the plugin, let the team know what changed. It’s good to include a version number in your extension (you can note it in an extension.json or even in the tooltip of the pyRevit button). Keep a simple change log so power users know if a new feature or fix was added. This can be communicated via email or a Teams channel for BIM development updates.
Testing and Revit Versions: Test your pyRevit plugins on all Revit versions in use at your company. PyRevit itself is version-specific (make sure everyone has a pyRevit version compatible with their Revit release), and some API calls might behave differently in Revit 2022 vs 2024, for example. Ensuring compatibility will save headaches when sharing firm-wide.
Governance: Decide who can modify the plugin. In a team setting, it might be just one BIM manager or a small automation committee that pushes updates, to avoid chaos. Git can help manage this with pull requests if multiple developers are involved. Having clear “ownership” of the extension means updates are curated and reliable.
By following these practices, you create a sustainable environment for Revit automation in your firm – where tools are shared, maintained, and improved over time, much like any important asset.
Beyond pyRevit: AI-Powered Revit Automation with ArchiLabs
Developing and sharing custom pyRevit tools can revolutionize your workflow, but not everyone has the time or expertise to script their own solutions. This is where new AI-driven automation platforms are stepping in to complement traditional scripting. One such cutting-edge tool is ArchiLabs – an AI-powered Revit automation platform built exclusively for Revit. ArchiLabs allows users to create automation workflows through an intuitive drag-and-drop interface or even via AI-assisted chat, instead of writing code. In other words, it’s aiming to be an “AI co-pilot” for Revit that any architect or engineer can use, not just programmers (Windsurf Editor by Codeium for Revit: AI Automation in Revit).
Unlike Dynamo (the visual programming tool many are familiar with), ArchiLabs doesn’t rely on Dynamo graphs or external scripts – it runs as its own Revit add-in with a node-based interface, but greatly enhanced by AI. In fact, ArchiLabs streamlines Revit tasks without requiring Dynamo or manual coding (Windsurf Editor by Codeium for Revit: AI Automation in Revit) (BIM Automation: AI-Powered Efficiency for Revit Workflows). The platform comes pre-loaded with high-level “nodes” and commands tailored to common BIM tasks. It particularly excels at tedious, time-consuming work in the documentation phase. According to ArchiLabs, tasks like sheet creation, tagging, and dimensioning – which normally might consume hours of manual effort or require complex Dynamo routines – can be done in a few clicks or a simple prompt (Windsurf Editor by Codeium for Revit: AI Automation in Revit) (Windsurf Editor by Codeium for Revit: AI Automation in Revit). For example, you could tell ArchiLabs in plain English, “Create sheets for each floor plan and place all room tags and dimensions automatically,” and the AI will execute that multi-step process for you (Windsurf Editor by Codeium for Revit: AI Automation in Revit). What might take a BIM technician many clicks (or a custom pyRevit script) is completed in seconds. This kind of domain-specific AI automation is a game-changer for BIM workflow automation.
ArchiLabs achieves this through two primary interfaces: a visual workflow builder and a chat-based command interface. The drag-and-drop workflow builder lets you chain together nodes like “Create Sheet,” “Tag All Rooms,” etc., to design a sequence of actions. It’s reminiscent of Dynamo’s node canvas but much more accessible – the system can even suggest how to connect nodes logically, thanks to built-in AI assistance (Windsurf Editor by Codeium for Revit: AI Automation in Revit) (Windsurf Editor by Codeium for Revit: AI Automation in Revit). For instance, place a “Tag Rooms” node after a “Create Sheets” node, and ArchiLabs might auto-link them knowing that tagging typically follows sheet creation. This guided approach means even users with zero Dynamo experience can set up powerful automations by simply arranging a few blocks. On the other hand, the chat interface allows you to type commands or goals in natural language (just like chatting with an AI) – e.g. “Add dimensions to all walls on Level 2” – and ArchiLabs will interpret and perform it. It’s like having a conversation with your Revit, telling it what to do next.
Because ArchiLabs is Revit-only and purpose-built, it has deep knowledge of Revit elements and behaviors. It’s not a general coding AI; it’s been designed to understand things like views, sheets, families, tags, etc. The result is a system that can handle context-specific decisions. For example, when tagging elements, it knows to avoid duplicating existing tags and to follow view visibility settings. When creating sheets, it follows naming conventions and avoids duplicating sheet numbers. All of this happens without the user needing to script those rules – the intelligence is built into the platform.
For teams, a tool like ArchiLabs can complement your pyRevit plugins. You might use pyRevit for very custom, company-specific tools, and use ArchiLabs to quickly spin up automations for more general tasks or new challenges (especially when you don’t have a pre-written script on hand). Since ArchiLabs automations can be created on-the-fly with AI assistance, it empowers a broader range of staff to automate their work. A project architect who isn’t comfortable writing Python can still automate a tedious task by either dropping some nodes or asking the AI assistant within ArchiLabs. This democratization of automation means the benefits of Revit automation aren’t limited to the coders in the office – everyone can participate in improving efficiency.
Lastly, sharing workflows in ArchiLabs is inherently easier because they aren’t code files – they are either saved node diagrams or simply skills the AI can replicate. Multiple team members can use the same ArchiLabs workflow or prompt without worrying about installing extensions or versions. In a sense, ArchiLabs provides a higher-level, AI-driven layer of Revit automation that works alongside your traditional plugins and scripts.
ArchiLabs is a relatively new approach, but it’s worth exploring if you’re looking to further streamline your Revit processes. By embracing such AI tools, firms can potentially leapfrog some manual scripting efforts and achieve similar outcomes faster. For example, tasks like batch tagging and dimensioning that you might have solved with a pyRevit script could be accomplished through ArchiLabs by simply describing the goal to the AI. And because it’s all within Revit (no Dynamo needed), it feels like a natural extension of the software.
Conclusion
Sharing pyRevit plugins with your team is a powerful way to multiply the impact of your work. Instead of one person saving a few hours with a clever script, an entire team of architects and engineers can collectively save thousands of hours, ensure better consistency, and focus more on design rather than drudgery. Whether you choose to distribute your custom tools via a shared drive or a Git-based workflow, the key is to integrate it into your BIM processes and get everyone on board. By building a culture of automation and knowledge-sharing, BIM managers can significantly optimize workflows and drive innovation in how projects are delivered.
At the same time, keep an eye on the evolving landscape of Revit automation. Tools like ArchiLabs are pushing the boundaries by making automation more intelligent and accessible. They don’t replace traditional scripting – instead, they augment it, offering alternative ways to automate tasks (especially for those who aren’t developers). An organization that leverages both custom plugins and AI-assisted automation stands to gain a competitive edge in efficiency.
In summary, invest the effort to package and share your Revit plugins – it pays off in team-wide productivity. Encourage your colleagues to contribute ideas for new tools or improvements to existing ones. And as you streamline your current workflows with shared pyRevit extensions, consider exploring AI-driven solutions like ArchiLabs for the next level of efficiency in your BIM workflow optimization journey. With the right mix of tools and teamwork, you can transform tedious Revit tasks into opportunities for innovation and speed.