{"id":32616168,"url":"https://github.com/noumenadigital/npl-cli","last_synced_at":"2026-04-01T17:23:04.903Z","repository":{"id":242484767,"uuid":"733896435","full_name":"NoumenaDigital/npl-cli","owner":"NoumenaDigital","description":"The NPL CLI is a command line tool to support the development of projects written in Noumena Protocol Language (NPL). It offers several useful commands for interacting with your NPL projects.","archived":false,"fork":false,"pushed_at":"2025-10-27T10:46:53.000Z","size":444,"stargazers_count":17,"open_issues_count":3,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-27T12:23:15.892Z","etag":null,"topics":["cli","compiler","language","languages","mcp","npl","swagger","testing"],"latest_commit_sha":null,"homepage":"https://noumenadigital.com","language":"Kotlin","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/NoumenaDigital.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE.md","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-12-20T11:30:16.000Z","updated_at":"2025-10-27T10:29:26.000Z","dependencies_parsed_at":"2025-02-07T13:38:27.174Z","dependency_job_id":"0b506902-93d4-4045-afb4-55f9d8b3719c","html_url":"https://github.com/NoumenaDigital/npl-cli","commit_stats":null,"previous_names":["noumenadigital/npl-cli"],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/NoumenaDigital/npl-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NoumenaDigital%2Fnpl-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NoumenaDigital%2Fnpl-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NoumenaDigital%2Fnpl-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NoumenaDigital%2Fnpl-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NoumenaDigital","download_url":"https://codeload.github.com/NoumenaDigital/npl-cli/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NoumenaDigital%2Fnpl-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281844698,"owners_count":26571517,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-30T02:00:06.501Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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","compiler","language","languages","mcp","npl","swagger","testing"],"created_at":"2025-10-30T16:53:35.839Z","updated_at":"2026-04-01T17:23:04.862Z","avatar_url":"https://github.com/NoumenaDigital.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NPL CLI\n\nYou can find the full CLI documentation here: [cli.md](docs/runtime/tools/build-tools/cli.md)\n\n## Versioning\n\nThe NPL CLI uses a versioning scheme aligned with Noumena Platform releases.\n\n### Examples\n\n- `2025.1.2` — Base release matching the Noumena Platform version.\n- `2025.1.2-1` — First CLI-specific patch based on platform version `2025.1.2`.\n\nThis helps ensure consistency between the platform and CLI tool while allowing independent CLI updates when needed.\n\n# Development\n\n## Prerequisites\n\nYou'll need Maven and Java 24 (graalvm if you want to build binaries) or later installed on your system.\n\n## Build Profiles\n\nThe project has three build profiles for different testing scenarios:\n\n### Default Profile\n\nRegular testing that runs integration tests directly without using binary:\n\n```bash\nmvn clean test\n```\n\n### Native Profile\n\nBuilds a native binary and runs integration tests against it:\n\n```bash\nmvn clean verify -Pnative\n```\n\n### Config Generation Profile\n\nBuilds a fat JAR and instruments it with the native agent to generate GraalVM native image configuration:\n\n```bash\nmvn clean verify -Pconfig-gen\n```\n\n## Automated checks and formatting\n\nYou can use `pre-commit` to run some automated checks as well as Kotlin (ktlint) and Markdown formatting whenever you\ncommit something.\n\n```shell\nbrew install pre-commit\npre-commit install\n```\n\nThe checks can be bypassed by running `git commit -n` or `git commit --no-verify`\n\n### detect-secrets\n\nEnforces accidental secret commits with a pre-commit hook using Yelp's detect-secrets tool. The pre-commit hook will\nscan staged changes for potential secrets before allowing a commit. If any secrets are detected above baseline, the\ncommit will be aborted, ensuring that no sensitive information is pushed to the repository.\n\nNo need to install locally, just make sure you have the pre-commit hook installed.\n\nTo check locally:\n\n```shell\npre-commit run detect-secrets --all-files\n```\n\nTo generate a new baseline, install the version of `detect-secrets` that's configured in `.pre-commit-config.yaml`\nlocally (using `pip` or `brew` -- just double check that you have the right version) and run:\n\n```shell\ndetect-secrets scan \u003e .secrets.baseline\n```\n\n### ktlint\n\nThis project enforces a standard code formatting style using [ktlint](https://github.com/pinterest/ktlint) via the\nautomatic `pretty-format-kotlin` [pre-commit hook](https://github.com/macisamuele/language-formatters-pre-commit-hooks).\n\nThe `pretty-format-kotlin` hook automatically formats Kotlin code with ktlint rules before committing it.\n\nYou can run ktlint for the entire project using the `pre-commit` like so:\n\n```shell\npre-commit run pretty-format-kotlin --all-files\n```\n\n### prettier\n\nWe use [prettier](https://prettier.io) to format our Markdown. The configuration is found in\n[.prettierrc.yml](.prettierrc.yml).\n\nTo format all Markdown files in the project, run (needed if e.g. the corresponding job is failing):\n\n```shell\npre-commit run prettier --all-files\n```\n\nNote that `prettier` formats tables differently than IntelliJ, so you might want to disable IntelliJ's\n`Incorrect table formatting` Markdown inspection.\n\n## Version\n\nThe NPL CLI follows a versioning scheme aligned with Noumena Platform releases.\n\n### Updating the Version\n\n- You must manually update the version in the `pom.xml` file.\n- For a **first-time release**, set the version to match the Noumena Platform version (e.g., `2025.1.2`).\n- For **CLI patches**, append a patch number starting from `-1` (e.g., `2025.1.2-1`).\n\nMake sure the version you set correctly reflects the corresponding Noumena Platform release.\n\n## Old CLI\n\nThe older CLI was intended for use with Noumena Cloud. It is no longer supported and has been replaced by the new CLI.\nThe old CLI is still available under the GitHub releases, and is documented in the [old CLI README](OLD-CLI-README.md).\n\n## Deploy Command\n\nThe `deploy` command allows you to deploy NPL sources to a Noumena Engine instance. In order to use the command, you\nneed to configure appropriate settings in the [npl.yml file](docs/runtime/tools/build-tools/cli.md#configuration-file).\n\n### Usage\n\n```bash\nnpl deploy --source-dir \u003cdirectory\u003e [--clear]\n```\n\nWhere:\n\n- `[directory]` (required) is the path to the directory containing NPL sources\n- `[--clear]` (optional) clears the application contents before deployment\n\n## Cloud login command\n\nThe `cloud login` command allows you to login to NOUMENA cloud with device token flow.\n\n### Usage\n\n```bash\nnpl cloud login\n```\n\nThat command will login you to the NOUMENA cloud and store the access token in the ~/.noumena folder.\n\n| Args         | Default values                             | Can be overridden |\n| ------------ | ------------------------------------------ | ----------------- |\n| clientId     | paas                                       | Yes               |\n| clientSecret | paas                                       | Yes               |\n| url          | https://keycloak.noumena.cloud/realms/paas | Yes               |\n\n## Cloud deploy command\n\nThe `cloud deploy` command allows you to deploy NPL sources to a NOUMENA cloud application.\n\n### Usage\n\n```bash\nnpl cloud deploy --appId \u003capplicationUUID\u003e --source-dir \u003cdirectory\u003e\n```\n\nThat command will deploy your sources to the NOUMENA cloud application.\n\n| Args         | Default values                             | Can be overridden |\n| ------------ | ------------------------------------------ | ----------------- |\n| app          | -                                          | Yes               |\n| tenant       | -                                          | Yes               |\n| url          | https://portal.noumena.cloud               | Yes               |\n| sourceDir    | .                                          | Yes               |\n| authUrl      | https://keycloak.noumena.cloud/realms/paas | Yes               |\n| clientId     | paas                                       | Yes               |\n| clientSecret | paas                                       | Yes               |\n\n## Cloud clear command\n\nThe `cloud clear` command allows you to clear the contents of a NOUMENA cloud application.\n\n### Usage\n\n```bash\nnpl cloud clear --appId \u003capplicationUUID\u003e\n```\n\nThat command will remove your application from the NOUMENA cloud.\n\n| Args         | Default values                             | Can be overridden |\n| ------------ | ------------------------------------------ | ----------------- |\n| app          | -                                          | Yes               |\n| tenant       | -                                          | Yes               |\n| url          | https://portal.noumena.cloud               | Yes               |\n| authUrl      | https://keycloak.noumena.cloud/realms/paas | Yes               |\n| clientId     | paas                                       | Yes               |\n| clientSecret | paas                                       | Yes               |\n\n## Cloud status command\n\nThe `cloud status` command allows you to list all your tenants and applications in NOUMENA cloud with their current\nstatus.\n\n### Usage\n\n```bash\nnpl cloud status\n```\n\nThat command will display a tree of your tenants and their applications with status indicators.\n\nExample output:\n\n```\n📂 My Tenant (my-tenant) [active] 🟢\n  ├── 📦 My App (my-app) [active] 🟢\n  └── 📦 Another App (another-app) [pending] 🟡\n📂 Other Tenant (other-tenant) [deactivated] 🔴\n```\n\n| Args         | Default values                             | Can be overridden |\n| ------------ | ------------------------------------------ | ----------------- |\n| url          | https://portal.noumena.cloud               | Yes               |\n| authUrl      | https://keycloak.noumena.cloud/realms/paas | Yes               |\n| clientId     | paas                                       | Yes               |\n| clientSecret | paas                                       | Yes               |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoumenadigital%2Fnpl-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnoumenadigital%2Fnpl-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoumenadigital%2Fnpl-cli/lists"}