# Babel Desktop

Babel Desktop is the cross-platform application for Windows, macOS and Linux
that edits and runs Babel Obfuscator projects and manages a Babel Licensing
Service.

## License requirements

| License edition | Supported platforms |
| - | - |
| Enterprise | Windows |
| Ultimate or higher | Windows, macOS, Linux |

A demo license can be used for evaluation. Licensing management also requires the appropriate Babel Licensing Server or Data Center entitlement.

Babel Desktop is new in Babel 12.0. It replaces Babel UI, which ran only on Windows. The desktop runs the Babel Obfuscator engine itself, so with the same settings a run produces the same output as the command line tool or the MSBuild task. Projects are saved as the `.babel` files the [MSBuild task](https://docs.babelfor.net/obfuscator/msbuild-task) reads, which means a project set up in the desktop can later be built unattended on a build server.

The application covers:

- **Obfuscation projects**: add assemblies, connect merge, embed and reference dependencies on a canvas, edit every engine option and the XML rules, run the obfuscation and review the statistics. See [Obfuscation Projects](https://docs.babelfor.net/desktop/obfuscation-projects).
- **Tools**: decode obfuscated stack traces with XML map files in the [Stack Decoder](https://docs.babelfor.net/desktop/stack-decoder), browse the engine warning reference and discover engine plugin arguments.
- **Licensing**: the built-in [Licensing](https://docs.babelfor.net/desktop/licensing) views connect to a Babel Licensing Service with an API key and manage customers, products, orders, licenses, templates, tokens, reports, users, API keys, webhooks and server settings, with a dashboard and an activity globe.
- **Personalization**: [extensions](https://docs.babelfor.net/desktop/extensions), [themes](https://docs.babelfor.net/desktop/themes) and [interface languages](https://docs.babelfor.net/desktop/languages) (English, Italian, French, German, Spanish and Japanese).
- **Automation**: an opt-in local [MCP server](https://docs.babelfor.net/desktop/mcp-server) lets an AI assistant such as Claude Code operate the application.
- **Updates**: new versions are [installed automatically](https://docs.babelfor.net/desktop/updates) from a signed update feed.

![Babel Desktop start screen with no project open, showing the Add assemblies and Open project buttons, the New, Open and Command palette shortcuts, the activity bar on the left and the status bar reporting that the local engine is connected](https://docs.babelfor.net/img/desktop/desktop-welcome.png)
_The start screen: add assemblies or open a project to begin_

> **Info:** Babel Desktop does not install the _babel_ command line tool or the MSBuild task. To run Babel from a terminal, a build script or MSBuild, use the zip packages or the NuGet tools described in [Install](https://docs.babelfor.net/obfuscator/getting-started/install).

## Getting Started

- [Install](https://docs.babelfor.net/desktop/getting-started/install): installers for Windows, macOS and Linux.
- [Product Activation](https://docs.babelfor.net/desktop/getting-started/product-activation): load your license from a file, an activation key or a floating license, and what each license enables.

## The Application Window

The main window is laid out like a code editor:

- **Activity bar**: the column of icons on the left opens the _Project_ sidebar, the _Extensions_ view, the _Stack decoder_, each [Licensing connection](https://docs.babelfor.net/desktop/licensing/connecting), the views added by installed extensions, the account menu and _Settings_.
- **Canvas**: the project graph, with the _Add Assembly_ button and the zoom controls. See [Obfuscation Projects](https://docs.babelfor.net/desktop/obfuscation-projects).
- **Properties panel**: the settings and XML rules of the selected assembly, docked on the right.
- **Activity panel**: the progress and the engine log of the current run, docked at the bottom.
- **Status bar**: the engine connection state and the engine version.

To resize a panel, drag its separator. Babel Desktop remembers the sizes.

### Command Palette

Press `Ctrl+Shift+P` (`Cmd+Shift+P` on macOS) to open the command palette. The commands you used last are at the top, under _recently used_, and each command shows its keyboard shortcut when it has one. Type to filter the list. The palette lists all application commands: project commands (_Project: New_, _Project: Open..._, _Project: Open Recent..._, _Project: Save_, _Project: Save As..._), assembly commands (_Assembly: Add primary targets..._, _Assembly: Replace input and keep settings..._, the dependency commands), the [setup commands](https://docs.babelfor.net/desktop/obfuscation-projects#setup-commands) (_Obfuscation: Setup merge into main assembly_, _Obfuscation: Setup public obfuscation (all assemblies)_, _Obfuscation: Set level..._), tools (_Tools: Stack decoder_, _Tools: Warning reference_, _Tools: Job warnings_), _Engine plugins_ commands, MCP server commands, commands added by extensions, and the _About_ commands with the third-party notices.

![Command palette open over the project canvas, with Project: Open... marked as recently used, followed by Project: Open Recent..., Tools: Stack decoder, Tools: Warning reference, Project: New, Assembly: Replace input and keep settings..., the Project Save commands and the Assembly commands, each with its keyboard shortcut](https://docs.babelfor.net/img/desktop/desktop-command-palette.png)
_The command palette_

### Keyboard Shortcuts

| Command | Windows and Linux | macOS |
| - | - | - |
| Command palette | `Ctrl+Shift+P` | `Cmd+Shift+P` |
| New project | `Ctrl+N` | `Cmd+N` |
| Open project | `Ctrl+O` | `Cmd+O` |
| Save project | `Ctrl+S` | `Cmd+S` |
| Save project as | `Ctrl+Shift+S` | `Cmd+Shift+S` |
| Add assembly | `Ctrl+Shift+A` | `Cmd+Shift+A` |
| Run obfuscation | `Ctrl+Enter` | `Cmd+Enter` |
| Run obfuscated app | `Ctrl+F5` | `Cmd+F5` |
| Auto layout graph | `Ctrl+Shift+L` | `Cmd+Shift+L` |
| Project sidebar | `Ctrl+Shift+E` | `Cmd+Shift+E` |
| Extensions view | `Ctrl+Shift+X` | `Cmd+Shift+X` |
| Stack decoder | `Ctrl+Shift+D` | `Cmd+Shift+D` |
| Settings | `Ctrl+,` | `Cmd+,` |

### Settings

The _Settings_ dialog sorts settings into categories and has a search box at the top:

- **Appearance**: interface language, theme, density, text size and the style of the Licensing activity globe. See [Themes](https://docs.babelfor.net/desktop/themes) and [Languages](https://docs.babelfor.net/desktop/languages).
- **Application**: version and automatic updates. See [Updates](https://docs.babelfor.net/desktop/updates).
- **License**: the engine license source, described in [Product Activation](https://docs.babelfor.net/desktop/getting-started/product-activation).
- **Extensions**: the address of an extension catalog.
- **MCP**: the automation server. See [MCP Server](https://docs.babelfor.net/desktop/mcp-server).
- **Obfuscation**: whether independent flows of a project run in parallel, and how many at once. See [Running Flows in Parallel](https://docs.babelfor.net/desktop/obfuscation-projects#running-flows-in-parallel).
- **Selected assembly**: shortcuts to the properties and XML rules of the selected assembly.
- **Licensing connections** and **IP geolocation**: the services managed from Babel Desktop and the IP lookup of the activity globe. See [Licensing](https://docs.babelfor.net/desktop/licensing).
- Categories added by each Licensing connection and by installed extensions.

## Work Recovery

Babel Desktop takes recovery snapshots of project changes you have applied but not saved. If the application or the engine stops unexpectedly, a banner on the next start offers to restore that work. Session passwords, such as signing key passwords, are never written to snapshots or project files, so you have to enter them again.
