{"id":13527250,"url":"https://github.com/adobe/helix-cli","last_synced_at":"2026-04-02T10:41:22.951Z","repository":{"id":37385210,"uuid":"139854376","full_name":"adobe/helix-cli","owner":"adobe","description":"Command-line tools for developing with AEM","archived":false,"fork":false,"pushed_at":"2026-02-19T19:04:50.000Z","size":50427,"stargazers_count":61,"open_issues_count":19,"forks_count":66,"subscribers_count":48,"default_branch":"main","last_synced_at":"2026-02-19T21:57:30.442Z","etag":null,"topics":["cli","helix","helix2","helix3"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adobe.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-07-05T13:34:33.000Z","updated_at":"2026-02-12T04:15:32.000Z","dependencies_parsed_at":"2025-04-21T13:35:15.085Z","dependency_job_id":"a40ec371-060c-4aa6-905b-5e68196215aa","html_url":"https://github.com/adobe/helix-cli","commit_stats":{"total_commits":3260,"total_committers":42,"mean_commits":77.61904761904762,"dds":0.7926380368098159,"last_synced_commit":"14c0cdf6631a21d859b1fdb15c5f1e23ff7b48a2"},"previous_names":[],"tags_count":1055,"template":false,"template_full_name":null,"purl":"pkg:github/adobe/helix-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adobe%2Fhelix-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adobe%2Fhelix-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adobe%2Fhelix-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adobe%2Fhelix-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adobe","download_url":"https://codeload.github.com/adobe/helix-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adobe%2Fhelix-cli/sbom","scorecard":{"id":167260,"data":{"date":"2025-08-11","repo":{"name":"github.com/adobe/helix-cli","commit":"8594ce51520b7fc9a39eb7025ff54cc111dfbf5a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":6.4,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 1/12 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/adobe/.github/.github/SECURITY.md:1","Info: Found linked content: github.com/adobe/.github/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/adobe/.github/.github/SECURITY.md:1","Info: Found text in security policy: github.com/adobe/.github/.github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:16","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:17","Warn: no topLevel permission defined: .github/workflows/codeql.yml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/main.yaml:9","Info: topLevel 'issues' permission set to 'read': .github/workflows/main.yaml:10","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":3,"reason":"dependency not pinned by hash detected -- score normalized to 3","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/adobe/helix-cli/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/adobe/helix-cli/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/adobe/helix-cli/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yaml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/adobe/helix-cli/main.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yaml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/adobe/helix-cli/main.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/main.yaml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/adobe/helix-cli/main.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yaml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/adobe/helix-cli/main.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yaml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/adobe/helix-cli/main.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yaml:63: update your workflow using https://app.stepsecurity.io/secureworkflow/adobe/helix-cli/main.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yaml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/adobe/helix-cli/main.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/semver-check.yaml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/adobe/helix-cli/semver-check.yaml/main?enable=pin","Info:   1 out of  10 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned","Info:   2 out of   2 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (20) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-16T15:15:28.829Z","repository_id":37385210,"created_at":"2025-08-16T15:15:28.829Z","updated_at":"2025-08-16T15:15:28.829Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30016507,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T17:00:27.440Z","status":"ssl_error","status_checked_at":"2026-03-02T17:00:03.402Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","helix","helix2","helix3"],"created_at":"2024-08-01T06:01:44.143Z","updated_at":"2026-03-02T21:01:07.721Z","avatar_url":"https://github.com/adobe.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","Developing","Local development"],"sub_categories":[],"readme":"# AEM Command Line Interface (`aem`)\n\n## Status\n\n[![codecov](https://img.shields.io/codecov/c/github/adobe/helix-cli.svg)](https://codecov.io/gh/adobe/helix-cli)\n![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/adobe/helix-cli/main.yaml)\n[![GitHub license](https://img.shields.io/github/license/adobe/helix-cli.svg)](https://github.com/adobe/helix-cli/blob/master/LICENSE.txt)\n[![GitHub issues](https://img.shields.io/github/issues/adobe/helix-cli.svg)](https://github.com/adobe/helix-cli/issues)\n\nThe AEM Command Line Interface allows web developers to create, develop, and deploy digital experiences using the Adobe Experience Manager Sites feature Edge Delivery Services. Some of this functionality was known as Franklin or Project Helix before.\n\n## Installation\n\nInstall `aem` as a global command. You need Node 12.11 or newer.\n\n```bash\nnpm install -g @adobe/aem-cli\n```\n\nIf this fails with `File exists: /opt/homebrew/bin/hlx`, please [see here](#npm-install-fails-with-file-exists-opthomebrewbinhlx).\n\n## Quick Start\n\n```\n$ aem --help\nUsage: aem \u003ccommand\u003e [options]\n\nCommands:\n  aem up  Run a AEM development server\n  aem import  Run the AEM import server\n\nOptions:\n  --version                Show version number                         [boolean]\n  --log-file, --logFile    Log file (use \"-\" for stdout)  [array] [default: \"-\"]\n  --log-level, --logLevel  Log level\n        [string] [choices: \"silly\", \"debug\", \"verbose\", \"info\", \"warn\", \"error\"]\n                                                               [default: \"info\"]\n  --tls-key, --tlsKey      Path to .key file (for enabling TLS)        [string]\n  --tls-cert, --tlsCert    Path to .pem file (for enabling TLS)        [string]\n  --help                   Show help                                   [boolean]\n\nuse \u003ccommand\u003e --help to get command specific details.\n\nfor more information, find our manual at https://github.com/adobe/helix-cli\n```\n\n## Starting development\n\n```\n$ cd \u003cmy-cool-project\u003e\n$ aem up\n```\n\n### automatically open the browser\n\nThe `--open` argument takes a path, eg `--open=/products/`, will cause the browser to be openend\nat the specific location. Disable with `--no-open'.`\n\n### browser console log forwarding\n\nThe `--forward-browser-logs` flag enables forwarding of browser console messages (log, error, warn, info) to the terminal. This is particularly useful for debugging client-side issues without having to open the browser's developer tools.\n\n```\n$ aem up --forward-browser-logs\n```\n\nWhen enabled, browser console messages will appear in your terminal with the following format:\n```\n[Browser:error] 2025-07-27T10:30:45.123Z http://localhost:3000/script.js:42 Error message here\n```\n\nThis feature is especially helpful when:\n- Debugging JavaScript errors in a headless environment\n- Monitoring client-side behavior during development\n- Working with AI coding assistants that need visibility into both server and client logs\n\n### html folder for content preview\n\nThe `--html-folder` option enables serving HTML files without extensions, useful for previewing content changes when you don't have access to the authoring system.\n\n```\n$ aem up --html-folder content\n```\n\nThis enables two features:\n\n1. **Extension-less URLs**: Access `/content/page` to serve `content/page.html`\n2. **Plain HTML with metadata**: Create `content/page.plain.html` files that are automatically wrapped with proper HTML structure and metadata processing\n\n#### Plain HTML files (.plain.html)\n\nPlain HTML files contain only the main content and an optional metadata block. The CLI automatically:\n- Wraps content in `\u003chtml\u003e\u003chead\u003e\u003cbody\u003e\u003cheader\u003e\u003cmain\u003e\u003cfooter\u003e` structure\n- Merges in `head.html` content\n- The metadata block is removed from the rendered content and converted to meta tags in the `\u003chead\u003e`.\n\n### setting up a self-signed cert for using https\n\n1. create the certificate\n\n\n```\n$ openssl req -new -newkey rsa:4096 -x509 -sha256 -days 365 -nodes -out server.crt -keyout server.key -subj \"/CN=localhost\"\n```\n\nthis will create 2 files: `server.crt` and `server.key`\n\nAlternatively, if your browser does not trust the certificate, you can use mkcert to generate a trusted certificate:\n```bash\n# Install mkcert via Homebrew or your preferred method, then run:\nmkcert -cert-file server.crt -key-file server.key localhost 127.0.0.1\n```\n\n2. start aem with tls support\n\n```\n$ aem up --tls-cert server.crt --tls-key server.key\n    ___    ________  ___                          __      __ v14.26.1\n   /   |  / ____/  |/  /  _____(_)___ ___  __  __/ /___ _/ /_____  _____\n  / /| | / __/ / /|_/ /  / ___/ / __ `__ \\/ / / / / __ `/ __/ __ \\/ ___/\n / ___ |/ /___/ /  / /  (__  ) / / / / / / /_/ / / /_/ / /_/ /_/ / /\n/_/  |_/_____/_/  /_/  /____/_/_/ /_/ /_/\\__,_/_/\\__,_/\\__/\\____/_/\n\ninfo: Starting AEM dev server v14.26.1\ninfo: Local AEM dev server up and running: https://localhost:3000/\n```\n\n3. (optional) Add arguments to .env file:\n\n```\n$ echo -e \"AEM_TLS_CERT=server.crt\\nAEM_TLS_KEY=server.key\" \u003e\u003e .env\n```\n\n### environment\n\nAll the command arguments can also be specified via environment variables. the `.env` file is\nloaded automatically.\n\nexample:\n\n`.env`\n```dotenv\nAEM_OPEN=/products\nAEM_PORT=8080\nAEM_PAGES_URL=https://stage.myproject.com\n```\n\n#### HTTP Proxy\n\nIn order to use a HTTP proxy (eg behind a corporate firewall), you can set the respective environment variables:\n\n`NO_PROXY` is a list of host names (optionally with a port). If the input URL matches any of the entries in `NO_PROXY`, then the input URL should be fetched by a direct request (i.e. without a proxy).\n\nMatching follows the following rules:\n\n`NO_PROXY=*` disables all proxies.\nSpace and commas may be used to separate the entries in the `NO_PROXY` list.\nIf `NO_PROXY` does not contain any entries, then proxies are never disabled.\nIf a port is added after the host name, then the ports must match. If the URL does not have an explicit port name, the protocol's default port is used.\nGenerally, the proxy is only disabled if the host name is an exact match for an entry in the `NO_PROXY` list. The only exceptions are entries that start with a dot or with a wildcard; then the proxy is disabled if the host name ends with the entry.\nSee test.js for examples of what should match and what does not.\n\n`*_PROXY`\nThe environment variable used for the proxy depends on the protocol of the URL. For example, https://example.com uses the \"https\" protocol, and therefore the proxy to be used is `HTTPS_PROXY` (NOT `HTTP_PROXY`, which is only used for http:-URLs).\n\nIf present, `ALL_PROXY` is used as fallback if there is no other match.\n\n#### Global\n\n| option | variable | default | description |\n|--------|----------|---------|-------------|\n| `--log-file` | `AEM_LOG_FILE` | `-` | Log file. use `-` to log to stdout |\n| `--log-level` | `AEM_LOG_LEVEL` | `info` | Log level |\n\n#### Up command\n\n| option            | variable            | default     | description                                                 |\n|-------------------|---------------------|-------------|-------------------------------------------------------------|\n| `--port`          | `AEM_PORT`          | `3000`      | Development server port                                     |\n| `--addr`          | `AEM_ADDR`          | `127.0.0.1` | Development server bind address                             |\n| `--livereload`    | `AEM_LIVERELOAD`    | `true`      | Enable automatic reloading of modified sources in browser.  |\n| `--no-livereload` | `AEM_NO_LIVERELOAD` | `false`     | Disable live-reload.                                        |\n| `--forward-browser-logs` | `AEM_FORWARD_BROWSER_LOGS` | `false` | Forward browser console logs to terminal.            |\n| `--html-folder`   | `AEM_HTML_FOLDER`   | undefined   | Serve HTML files from folder without extensions. Supports .html and .plain.html files. |\n| `--open`          | `AEM_OPEN`          | `/`         | Open a browser window at specified path after server start. |\n| `--no-open`       | `AEM_NO_OPEN`       | `false`     | Disable automatic opening of browser window.                |\n| `--tls-key`       | `AEM_TLS_KEY`       | undefined   | Path to .key file (for enabling TLS)                        |\n| `--tls-cert`      | `AEM_TLS_CERT`      | undefined   | Path to .pem file (for enabling TLS)                        |\n\n## Starting an import\n\nThe AEM Importer is an application that supports importing content to AEM.\n\n```\n$ cd \u003cmy-cool-project\u003e\n$ aem import\n```\n\nRead the full AEM Importer [documentation](https://github.com/adobe/helix-importer-ui).\n\n# Developing AEM CLI\n\n## Testing\n\nYou can use `npm run check` to run the tests and check whether your code adheres\nto the aem-cli coding style.\n\n### Browser Injectables\n\nBrowser-injected scripts (LiveReload and console log forwarding) are maintained in a separate sub-project at `packages/browser-injectables/`. This isolation keeps browser testing dependencies separate from the main CLI.\n\n#### Development\n- Injectable scripts are in `packages/browser-injectables/src/`\n- No build step required - scripts are used directly\n- Browser tests run only when injectable code changes\n\n#### Testing Browser Injectables\n```bash\ncd packages/browser-injectables\nnpm install\nnpm test\n```\n\n# Troubleshooting\n\n## `aem up` fails with `unable to get local issuer certificate`\n\nThis error occurs when the server certificate is not trusted by Node.js. The typical\ncause is that connections to the server `*.aem.page` and `*.hlx.page` are intercepted\nby an enterprise proxy or firewall which is trying to inspect the traffic.\n\nThese proxies use a private certificate authority (CA) to sign the certificates of the\nservers they intercept. To make Node.js trust the server certificate, you need to add\nthe CA certificate to the list of trusted CAs.\n\n### Option 1: Using IT-provided CA certificate\n\nThe CA certificate is typically provided by your IT department. You can ask them for\nthe CA certificate and save it to a file, e.g. `my-ca.crt`.\n\nThen you can use the [`NODE_EXTRA_CA_CERTS`](https://nodejs.org/docs/latest/api/cli.html) environment variable to make Node.js trust\nthe CA certificate:\n\n```bash\nexport NODE_EXTRA_CA_CERTS=my-ca.crt\naem up\n```\n\n### Option 2: Extracting certificate from browser\n\nIf you don't have access to the CA certificate from your IT department, you can extract it directly\nfrom your browser:\n\n1. Access the AEM admin URL in your browser (e.g., `https://admin.hlx.page/sidekick/owner-name/repo-name/github-branch-name/config.json`)\n2. Click on the padlock icon in the address bar and view the certificate details\n3. Export the certificate chain as a Base64 encoded `.pem` file\n4. Save it to a directory (e.g., `certs/hlx.page.pem`)\n5. Set the environment variable and run aem:\n\n```bash\nexport NODE_EXTRA_CA_CERTS=./certs/hlx.page.pem\naem up\n```\n\nOn Windows, use `set` instead of `export`:\n```cmd\nset NODE_EXTRA_CA_CERTS=./certs/hlx.page.pem\naem up\n```\n\nEither approach will make Node.js trust the server certificate and `aem up` should work.\n\n## `npm install` fails with `File exists: /opt/homebrew/bin/hlx`\n\nIf you try to install `@adobe/aem-cli`: \n\n```\n\u003e npm install -g @adobe/aem-cli\n...\nnpm error EEXIST: file already exists\nnpm error File exists: /opt/homebrew/bin/hlx\nnpm error Remove the existing file and try again, or run npm\n```\n\nThis can happen when you previously had installed this tool under its old package name [@adobe/helix-cli](https://www.npmjs.com/package/@adobe/helix-cli). Starting with version 15.0.0, this tool was renamed `aem` and published as `@adobe/aem-cli`. The previous `@adobe/helix-cli` has been deprecated. However, the new package still provides the command line binary under the old name `hlx` in addition to `aem`, for backwards compatibility, which can lead to the npm install error.\n\nTo solve, first uninstall the old version, then install again with the new name:\n\n```\nnpm uninstall -g @adobe/helix-cli\nnpm install -g @adobe/aem-cli\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadobe%2Fhelix-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadobe%2Fhelix-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadobe%2Fhelix-cli/lists"}