AEM Content Manager (ACM) – Permissions & Content Updates as Code
- ✓Open-source license (Apache-2.0)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Mature repo (>1y old)
- ✓Documented (README)
git clone https://github.com/wttech/acmTools overview
<p align="center">
<picture>
<source srcset="docs/acm-logo-with-text-white.svg" media="(prefers-color-scheme: dark)">
<img src="docs/acm-logo-with-text-black.svg" alt="AEM Content Manager" height="138">
</picture>
</p>
<p align="center">
<strong>Manage permissions & content updates as code.</strong><br>
AEM Tool · Permissions-as-Code · Content Migration · IDE-like Console
</p>
<p align="center">
<a href="https://github.com/wttech/acm/releases"><img src="https://img.shields.io/github/v/tag/wttech/acm" alt="GitHub tag (latest SemVer)"></a>
<a href="https://github.com/wttech/acm/releases"><img src="https://img.shields.io/github/downloads/wttech/acm/total" alt="GitHub All Releases"></a>
<a href="https://github.com/wttech/acm/actions/workflows/check.yml"><img src="https://github.com/wttech/acm/workflows/Check/badge.svg" alt="Check"></a>
<a href="http://www.apache.org/licenses/"><img src="docs/apache-license-badge.svg" alt="Apache License, Version 2.0, January 2004"></a>
<br>
<sub>Proudly sponsored by:</sub>
<br><br>
<a href="https://enterprisesolutions.wpp.com/" target="_blank">
<picture>
<source srcset="docs/wpp-es-primary-white.svg" media="(prefers-color-scheme: dark)">
<img src="docs/wpp-es-primary-navy.svg" alt="WPP Enterprise Solutions" height="20">
</picture>
</a>
</p>
---
# AEM Content Manager (ACM)
ACM for Adobe Experience Manager (AEM) streamlines workflows and boosts productivity with an intuitive interface and robust features. It automates bulk content and permission changes, making it ideal for content migration and large-scale permission management. ACM offers an IDE-like experience with code completion, auto-import, and on-the-fly compilation.
It works seamlessly across AEM on-premise, AMS, and AEMaaCS environments.
## References
* Talk at AdaptTo 2025 Conference - [Can't we just automate this? Permissions & content updates as-a-code with ACM Tool](https://adapt.to/2025/schedule/cant-we-just-automate-this-permissions-and-content-updates-as-a-code-with-acm-tool) by [Krystian Panek](mailto:krystian.panek@vml.com) & [Tomasz Sobczyk](mailto:tomasz.sobczyk@vml.com)
[](https://www.youtube.com/watch?v=hGcMWGE7ZiU)
## Screenshots
<img src="docs/screenshot-dashboard.png" width="720" alt="ACM Dashboard">
## Table of Contents
- [AEM Content Manager (ACM)](#aem-content-manager-acm)
- [References](#references)
- [Screenshots](#screenshots)
- [Table of Contents](#table-of-contents)
- [Key Features](#key-features)
- [All-in-one Solution](#all-in-one-solution)
- [New Approach](#new-approach)
- [Content Management](#content-management)
- [Permissions Management](#permissions-management)
- [Data Imports \& Exports](#data-imports--exports)
- [Installation](#installation)
- [Package Installation](#package-installation)
- [Tools Access Configuration](#tools-access-configuration)
- [Feature Permissions](#feature-permissions)
- [API Permissions](#api-permissions)
- [Compatibility](#compatibility)
- [Documentation](#documentation)
- [Usage](#usage)
- [Console](#console)
- [Content scripts](#content-scripts)
- [Minimal example](#minimal-example)
- [Conditions](#conditions)
- [Inputs example](#inputs-example)
- [Outputs example](#outputs-example)
- [Console \& logging](#console--logging)
- [Simple console output](#simple-console-output)
- [Timestamped console output](#timestamped-console-output)
- [Logged console output](#logged-console-output)
- [ACL example](#acl-example)
- [Repo example](#repo-example)
- [Abortable example](#abortable-example)
- [Script documentation](#script-documentation)
- [Locking](#locking)
- [History](#history)
- [Extension scripts](#extension-scripts)
- [Example extension script](#example-extension-script)
- [Snippets](#snippets)
- [Example snippet](#example-snippet)
- [Mocks](#mocks)
- [Notifications](#notifications)
- [AI and IDE tools](#ai-and-ide-tools)
- [MCP server](#mcp-server)
- [VS Code extension](#vs-code-extension)
- [Agent skill](#agent-skill)
- [Authors](#authors)
- [Contributing](#contributing)
- [License](#license)
## Key Features
### All-in-one Solution
ACM is a comprehensive alternative to tools like APM, AECU, AEM Groovy Console, and AC Tool.
It leverages the Groovy language, which is familiar to most Java developers, eliminating the need to learn custom YAML syntax or languages/grammars.
Enjoy a single, painless tool setup in AEM (Adobe Experience Manager) projects with no hooks and POM updates.
### New Approach
Experience a different way of using Groovy scripts.
ACM ensures the instance is healthy before scripts decide when to run: once, periodically, or at an exact date and time.
Execute scripts in parallel or sequentially, offering unmatched flexibility and control.
### Content Management
Effortlessly migrate pages and components between versions. Ensure content integrity and resolve issues with confidence.
### Permissions Management
Apply JCR permissions dynamically.
Manage permissions seamlessly during site creation, blueprinting, and for live copies, language copies, and other AEM-specific replication scenarios.
### Data Imports & Exports
Effortlessly integrate data from external sources into the JCR repository, enhancing content management capabilities.
By simplifying data import implementation, ACM allows developers to focus more on developing better components and presenting data effectively, ensuring a user-friendly experience.
## Installation
### Package Installation
The ready-to-install AEM packages are available on:
- [GitHub releases](https://github.com/wttech/acm/releases).
- [Maven Central](https://central.sonatype.com/search?q=dev.vml.es.acm).
There are two ways to install AEM Content Manager on your AEM (Adobe Experience Manager) instances:
1. **Using the 'all' package:**
* Recommended for fresh AEM instances.
* This package will also install Groovy Bundles ([groovy](https://mvnrepository.com/artifact/org.apache.groovy/groovy) and [groovy-templates](https://mvnrepository.com/artifact/org.apache.groovy/groovy-templates)).
2. **Using the 'minimal' package:**
* Recommended for AEM instances that already contain some dependencies shared with other tools.
* This package does not include Groovy bundles, which can be provided by other tools like [AEM Easy Content Upgrade](https://github.com/valtech/aem-easy-content-upgrade/releases) (AECU) or [AEM Groovy Console](https://github.com/orbinson/aem-groovy-console/releases).
For AEM On-Premise and AEM Managed Service (AMS) deployments, just install the ACM package using the AEM Package Manager.
:construction: Restart required: Basic ACLs and paths are created via [repo-init](https://sling.apache.org/documentation/bundles/repository-initialization.html) [script](https://github.com/wttech/acm/blob/main/ui.config/src/main/content/jcr_root/apps/acm-config/osgiconfig/config/org.apache.sling.jcr.repoinit.RepositoryInitializer~acmcore.config) after installing the ACM package. A reboot is strongly recommended, as the health checker may block code execution until the restart is complete. :construction:
For AEMaaCS deployments, embed the ACM package as a part of project-specific 'all' package like other vendor packages in the [AEM Project Archetype](https://github.com/adobe/aem-project-archetype/blob/develop/src/main/archetype/all/pom.xml):
Adjust file 'all/pom.xml':
1. Add dependency to [all](https://central.sonatype.com/artifact/dev.vml.es/acm.all) or [min](https://central.sonatype.com/artifact/dev.vml.es/acm.min) package in the *dependencies* section:
```xml
<dependency>
<groupId>dev.vml.es</groupId>
<artifactId>acm.all</artifactId>
<version>${acm.version}</version>
<type>zip</type>
</dependency>
```
2. Add embedding in *filevault-package-maven-plugin* configuration:
```xml
<embedded>
<groupId>dev.vml.es</groupId>
<artifactId>acm.all</artifactId>
<type>zip</type>
<target>/apps/${appId}-vendor-packages/application/install</target>
</embedded>
```
Remember to replace `${acm.version}` and `${appId}` with the actual values.
Repeat the same for [ui.content.example](https://central.sonatype.com/artifact/dev.vml.es/acm.ui.content.example) package if you want to install demonstrative ACM scripts to get you started quickly.
### Tools Access Configuration
The default settings are defined in the [repo init OSGi config](https://github.com/wttech/acm/blob/main/ui.config/src/main/content/jcr_root/apps/acm-config/osgiconfig/config/org.apache.sling.jcr.repoinit.RepositoryInitializer~acmcore.config), which effectively restrict access to the tool and script execution to administrators only - a recommended practice for production environments.
If you require further customization, you can create your own repo init OSGi config to override or extend the default configuration.
#### Feature Permissions
ACM supports fine-grained permission control through individual features. This allows you to grant specific capabilities to different user groups without providing full access to ACM tool. For a complete list of available features, see the [ACM features directory](https://github.com/wttech/acm/tree/main/ui.apps/src/main/content/jcr_root/apps/acm/feature).
**Example: Create groups for full and limited access:**
```ini
service.ranking=I"100"
scripts=["
set ACL for everyone
deny jcr:read on /apps/cq/core/content/nav/tools/acm
deny jcr:read on /apps/acm
end
create group acm-admins
set ACL for acm-admins
allow jcr:read on /apps/cq/core/content/nav/tools/acm
allow jcr:read on /apps/acm
end
create group acm-script-users
set ACL for acm-script-users
allow jcr:read on /appsWhat people ask about acm
What is wttech/acm?
+
wttech/acm is tools for the Claude AI ecosystem. AEM Content Manager (ACM) – Permissions & Content Updates as Code It has 35 GitHub stars and its last recorded update is dated 2026-10-13.
How do I install acm?
+
You can install acm by cloning the repository (https://github.com/wttech/acm) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is wttech/acm safe to use?
+
Our security agent has analyzed wttech/acm and assigned a Trust Score of 100/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.
Who maintains wttech/acm?
+
wttech/acm is maintained by wttech. The last recorded GitHub activity is dated 2026-10-13, with 48 open issues.
Are there alternatives to acm?
+
Yes. On ClaudeWave you can browse similar tools at /categories/tools, sorted by popularity or recent activity.
Deploy acm to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
More Tools
A single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathy's observations on LLM coding pitfalls.
An AI skill that provides design intelligence for building professional UI/UX across multiple platforms.
🪨 why use many token when few token do trick. Viral skill + proxy for coding agents that cuts 65% of tokens by talking like a caveman.
The fastest, litest AI Gateway. Rust core with Python SDK. Call 100+ LLM APIs in OpenAI (or native) format with cost tracking, guardrails, load balancing, and logging [Bedrock, Azure, OpenAI, Anthropic, OpenAI, VertexAI, vLLM, Nvidia NIM]
Use Claude Code, Codex, VSCode, Pi, and OpenCode (and 6 other harnesses) for free (1.3B+ free tokens) from your terminal, app, IDE, or phone, and now from the browser with native browser sessions (multi-harness + multi-model) like OpenClaw (voice supported + ToS friendly)
Wrap Antigravity, ChatGPT Codex, Claude Code, Grok Build, Muse Code, Devin as an OpenAI/Gemini/Claude/Codex compatible API service, allowing you to enjoy the free Gemini Series, GPT Series, Grok Series, Claude model through API