AcTools: the Assetto Corsa toolkit behind Content Manager
Alternative launcher for Assetto Corsa named Content Manager, and some utils as well.
At a glance
- What is it?
- gro-ove/actools is a C# workspace of libraries and applications for Assetto Corsa, and the best known part of it is Content Manager, an alternative launcher that replaces the game's own one. The interesting engineering sits in AcTools.Render, the renderer with Lite and Dark variants, and in AcTools.LapTimes, which digs into the Chromium IndexedDB store where the original launcher kept lap records.
- Who is it for?
- Adopt AcTools if you play Assetto Corsa and want the alternative launcher, the workshop content browsing and the car repair diagnostics that Content Manager provides, or if you are writing a modding tool and want the shared AC file handling and renderer. Do not adopt it as a general launcher framework or a cross-platform tool, since the workspace is Windows-only and currently x86 only, and the README says a 64-bit build will most likely not work.
- Can I use it commercially?
- Yes. MS-PL is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 22 days ago.
- What is it written in?
- Mainly C#, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A workspace of Assetto Corsa utilities
The repository holds a set of utils and apps designed for Assetto Corsa, and the README notes that some obsolete projects were moved to a separate actools-utils repository. The implementation language is C#, the licence is the Microsoft Public License, and the default branch is master.
The headline application is Content Manager, an alternative launcher for the game. Around it sits a set of libraries with names that map onto a modder's vocabulary rather than a general developer's.
AcTools is the main library, used by any other project, and the README points out that it is also used by Cars Manager and even by a modded KsEditor. It contains methods for working with common Assetto Corsa files and launching the game. AcTools.GenericMods is a small library for managing JSGME mods, described as fully compatible with the original but with optional hard links support. AcTools.ExtraKn5Utils, AcTools.WheelAngles and AcTools.NeuralTyres fill in the rest of the file format work, with NeuralTyres also carrying its own test project in the tree.
The repository is a Visual Studio solution, AcManager.sln, with the projects laid out at the top level and separate test projects for the tool, render and UI code: AcTools.Tests, AcTools.Render.Tests, AcManager.Tools.Tests, FirstFloor.ModernUI.Tests, AcTools.NeuralTyres.Tests and StringBasedFilter.Tests. There is also a Libraries directory and a packages.zip at the root, plus the shader resources that the render project compiles.
For an engineer evaluating it, the shape matters more than any single feature. This is a multi-project.NET solution with a long history, not a modern library with a clean public API.
AcTools.Render and the two renderers inside it
The rendering project is the most substantial piece of the workspace, and the README is unusually candid about it.
AcTools.Render is described as a replacement for AcTools.Kn5Render with a much more thoughtful architecture, and it contains two renderers. Lite is a simple skins-editing version that stays compatible with DirectX 10. Dark is an extended variation of Lite with lighting, skinning and a set of effects including SSLR, SSAO and PCSS. Both use forward rendering. There was also a deferred renderer, but the README says it was quite poor and got moved away.
Beyond rendering, the project has a set of special modes: updating ambient shadows, AO maps, recalculating tracks' maps and outlines. Those are the operations a modder actually needs when a car or a track has lighting assets that were authored for a different setup, and they are much harder to do outside the tool.
The shaders are generated from a T4 template, Shaders.tt, and the build notes explain that rebuilding it may require the DirectX SDK, while a prebuilt Shaders.cs and resource file are supplied so the build works without it. The repository topics for the project are assetto-corsa and shaders, which is where the focus sits.
Two more libraries are worth knowing about because they are self-contained and could be lifted independently. LicensePlates is fully independent of the AcTools libraries and generates number plates by using Lua to interpret style files and Magick.NET to create and save textures. StringBasedFilter is a small library for filtering objects with query expressions such as *ca & !(country:c* | year<1990), a compact boolean syntax over object attributes.
That filter syntax is the kind of detail that tells you the audience. It is designed for browsing a content library of thousands of cars, not for a general search API.
Reading lap times out of the original launcher
AcTools.LapTimes is the library for reading best lap times from different sources, and it has an unusual story.
The original Assetto Corsa launcher saves times using Chromium's IndexedDB. The README explains the chain: IndexedDB in Chromium uses LevelDB underneath, and reading it is quite a mess, so AcTools.LapTimes.LevelDb was written as a spin-off to load times from the old Assetto Corsa database.
The author's own comment on that project is that it is now completely redundant and that it is going to be removed for good. That is worth reading twice, because it is the difference between a library and an archaeological layer. The old database format belongs to a launcher version that no longer exists, so a tool for reading it has no future users.
The same pattern appears elsewhere. AcTools.AcSound wraps AcTools.SoundbankPlayer, which in turn is a small thing built around the FMOD library for playing FMOD soundbanks. AcManager.LargeFilesSharing handles uploading big files to various clouds, with a note that the self-written implementation takes much less than the 2 MB that the official Google library would add.
That is a recurring theme in this workspace. Almost every component works around the fact that the game or the launcher offers no API for what the community wants, and the workaround ends up being part of the project.
Content Manager and the WPF interface it is built on
The Content Manager application is split the way a large desktop application usually is. AcManager is the app itself, and the pieces around it separate logic from presentation.
AcManager.Tools holds the logic with almost no user interface parts, and the README names CarsManager and CarObject as examples of the kinds of objects that live there. AcManager.Controls holds common user interface components such as AcListPage. AcManager.ContentRepair contains diagnostics and repairs for common custom car issues in Assetto Corsa, which is the feature that matters most to a person with a car that will not load. AcManager.DiscordRpc and AcManager.Workshop cover Discord presence and workshop content.
The user interface itself is FirstFloor.ModernUI, described as a slightly modified version of Modern UI for WPF, which is where the Windows dependency comes from. There is also a FirstFloor.ModernUI.Win8Extension project, and the build notes explain that if you need support for the Windows 8, 8.1 and 10 notifications you must check a specific path in the project file; if it is wrong or the library is missing, the dependent code is disabled and fallback notifications are used.
Two smaller applications sit outside Content Manager. CustomPreviewUpdater generates previews using AcTools.Render, and CustomShowroom is a small wrapper around the same render library for standalone use without Content Manager. LicensePlatesGenerator is a console wrapper around the LicensePlates library. The pattern is consistent: heavy libraries underneath, thin applications on top, each usable on its own.
Building it, and the x86 problem
The build notes are the most practically useful part of the README, because this is not a project you can build with dotnet build and be done.
The platform constraint comes first. Only the x86 platform is supported for now. Projects can be built in x64, but the README says most likely it will not work, and that it should be fixable because all the referenced libraries have both x86 and x64 versions, to be solved later. In other words, a 64-bit build is possible in the sense that the compiler will accept it, and broken in the sense that it will fail at runtime.
The second note is a trap worth avoiding. The author uses small tools, mostly Cygwin shell scripts, to increment the version number and to auto-build the T4 templates, and they are disabled by default unless you have the ACTOOLS_BUILD_SCRIPTS=On environment variable set. The advice in the README is blunt: do not set it, or make sure you have something compatible in your system, and the offer at the end is to send the scripts if needed.
The third note concerns the shaders. You might need to install the DirectX SDK to rebuild AcTools.Render/Shaders/Shaders.tt, but a prebuilt Shaders.cs and resource file are provided in case you do not.
So the practical recipe is: clone or open AcManager.sln in Visual Studio on Windows, keep the target platform at x86, do not set ACTOOLS_BUILD_SCRIPTS, and let the prebuilt shader file be used. For most users the compiled build from the releases page is the sensible route and the workspace only matters if you intend to change something.
Licence, releases and where this does not apply
The licence is the Microsoft Public License, with the terms in LICENSE.txt at the root of the repository. MS-PL is a permissive, Microsoft-style licence that grants rights to use, modify and redistribute the code with the notice attached. It is an OSI-approved licence, but it is less widely listed than MIT or Apache 2.0, so organisations with a strict approved-licence list should still confirm its terms. This is not legal advice.
On maintenance, the repository is not archived and the last push was on 2026-10-01, the same day as release v0.8.2902.40693, titled Fix for Quick Switches. Before that came v0.8.2895.40668 with TreeIt support on 2026-08-09, and v0.8.2892.40649 with small optimizations on 2026-07-02. The version numbers carry the build numbers of the game they target, which is a reasonable way to version a launcher that has to stay compatible with a specific game build.
There are clear limits to where this applies. It is a Windows application built on WPF, so there is no macOS or Linux version of Content Manager in this workspace. It is x86 only today, which also rules out running it on a 64-bit-only environment without an emulation layer. And it is deeply specific to one racing game, so the generalizable parts are the file handling, the renderer and the small libraries, not the application.
For a player who wants to manage custom cars, browse the workshop and debug a broken mod, it is a well-maintained tool with a long history. For an engineer, the interesting question is whether any of the individual libraries deserve to be lifted into another project, and the answer there is mostly yes for the file and rendering code and mostly no for the UI stack.
Editorial conclusion
Adopt AcTools if you play Assetto Corsa and want the alternative launcher, the workshop content browsing and the car repair diagnostics that Content Manager provides, or if you are writing a modding tool and want the shared AC file handling and renderer. Do not adopt it as a general launcher framework or a cross-platform tool, since the workspace is Windows-only and currently x86 only, and the README says a 64-bit build will most likely not work. Before you build from source, set the platform to x86 and leave ACTOOLS_BUILD_SCRIPTS unset, because the version increment and template build scripts it enables assume Cygwin tools that are not present on a normal machine.
Frequently asked questions
What is AcTools and Content Manager for Assetto Corsa?
AcTools is a set of utils and apps designed for Assetto Corsa, and the best known part is Content Manager, an alternative launcher for the game. The workspace holds the shared libraries the application is built on, including AcTools.Render and AcTools.LapTimes.
Can I build AcTools in 64-bit?
Not usefully. The build notes say only the x86 platform is supported for now, that projects can be built in x64 but most likely it will not work, and that it should be fixable later because all the referenced libraries have both x86 and x64 versions.
What does the ACTOOLS_BUILD_SCRIPTS environment variable do?
Setting it to On enables the author's Cygwin based version increment and T4 template build scripts, which are disabled by default. The README advises not setting it unless you have compatible tools in your system.
How does AcTools read lap times from the original Assetto Corsa launcher?
The original launcher saved times using Chromium's IndexedDB, which uses LevelDb underneath, so a separate spin-off project, AcTools.LapTimes.LevelDb, reads the old database. The README notes that spin-off is now completely redundant and is going to be removed for good.
What licence is the AcTools repository released under?
It is released under the Microsoft Public License, with the terms in the LICENSE.txt file at the repository root. The repository is not archived, the last push was on 2026-10-01, and releases include v0.8.2902.40693 from that date.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/gro-ove-actools)Was this useful?