EUDIPLO CLI¶
The EUDIPLO CLI has two distributions of the same command-line tool:
- Standalone CLI: native executable, no Node.js required.
- npm package:
@eudiplo/cli, requires Node.js 22+.
The command name is eudiplo in both cases.
For focused guidance, see:
Installation¶
Standalone CLI (Linux/macOS)¶
The installer downloads a release archive and verifies it against
SHA256SUMS.txt from the same GitHub release before extracting.
Supported standalone release artifacts:
- Linux x64:
eudiplo-vVERSION-linux-x64.tar.gz - Linux arm64:
eudiplo-vVERSION-linux-arm64.tar.gz - macOS arm64:
eudiplo-vVERSION-macos-arm64.tar.gz - Windows x64:
eudiplo-vVERSION-windows-x64.zip
install.sh is for Linux/macOS shells only. On Windows, use Node.js/npm or the
Windows x64 release archive.
Release assets and checksums:
npm package (@eudiplo/cli, Node.js 22+)¶
One-off execution:
Global install:
@eudiplo/cli, npx, and eudiplo¶
@eudiplo/cliis the npm package name.npx @eudiplo/cli ...runs the package without a global install.eudiplo ...runs the installed command (standalone or npm-installed).
Uninstall¶
Use the removal path that matches how the CLI was installed. A separate
eudiplo uninstall command is intentionally not provided because the executable
may be managed by npm, a release archive, or a local installation directory.
For the standalone Linux/macOS installer, remove the installed binary:
If you installed the npm package globally, remove it with npm:
If you added it to a project, remove the project dependency with your package manager, for example:
The CLI stores instance metadata in ~/.eudiplo/config.json by default. Remove
that directory only if you also want to delete local CLI instance registrations:
Run a Local Demo Deployment¶
or, with npm one-off execution:
The demo command copies EUDIPLO's bundled Docker Compose deployment template, creates local demo assets, and starts a deliberately minimal stack using SQLite, local file storage, database-backed key management, and the web client:
.eudiplo.demo.envconfig/kms.json(global KMS configuration)config/demo(editable generated demo tenant configuration)
The standalone CLI removes the Node.js requirement only. Docker and Docker
Compose, or Podman and Podman Compose, are still required for demo.
Docker is preferred by default. If Docker is not found, the CLI tries Podman.
Set EUDIPLO_CONTAINER_RUNTIME=docker or EUDIPLO_CONTAINER_RUNTIME=podman to
force a specific Compose runtime.
Demo mode warning: generated demo credentials are for local onboarding only and must not be used in production.
Register an Existing Deployment¶
For Kubernetes, Helm, standalone containers, or any externally managed instance, register the public API URL:
eudiplo instance add production --url https://eudiplo.example.com
eudiplo instance ls
eudiplo instance show production
eudiplo instance use production
eudiplo instance remove old-production
Instance metadata is stored in the user's EUDIPLO CLI config directory, not in
the source tree. Do not put secrets in this config; commands that need client
credentials read EUDIPLO_CLIENT_ID and EUDIPLO_CLIENT_SECRET from the
environment.
Deployment-Neutral Commands¶
These commands work with both compose and external instances and do not
require Docker:
eudiplo doctor --instance production
eudiplo status --instance production
eudiplo config validate
eudiplo config editor setup
eudiplo --version
eudiplo version
--version and -v print the installed CLI version without network access.
version also checks the npm registry and reports whether an update is
available.
doctor checks the configured public URL, API reachability, /health, optional
client connectivity, and whether authentication environment variables are
available.
config validate parses the local CLI config, validates instance targets and
HTTP(S) URLs, verifies the default instance points to a configured instance, and
prints the configured instances. It does not require Docker or contact the
deployment.
Use config path to print the resolved CLI config file and config show to
inspect its validated contents. The JSON form is suitable for scripts:
config editor setup installs the JSON Schemas bundled with the CLI and merges
scoped associations into .vscode/settings.json, providing completion and
inline validation while editing tenant configuration. See
Configuration Validation for custom workspace
and config-directory examples.
Use eudiplo commands for a compact list of every nested command. The
Command Reference is generated from the same command
definitions using eudiplo commands --format markdown, so its options and help
text remain synchronized with the executable.
Shell Completion¶
Generate command, option, and enumerated-value completion for the current shell:
source <(eudiplo completion bash)
source <(eudiplo completion zsh)
eudiplo completion fish | source
eudiplo completion powershell | Out-String | Invoke-Expression
Persist the generated script in the shell's normal completion directory to load it automatically in future sessions.
Compose Driver Commands¶
These commands are available only for compose instances:
eudiplo init
eudiplo init ./eudiplo-minimal --preset minimal
eudiplo init ./eudiplo-standard --preset standard --start
eudiplo init --database postgres --storage local --kms vault
eudiplo init --preset standard --public-url https://eudiplo.example.com
eudiplo init --preset standard --demo-tenant
eudiplo up
eudiplo down
eudiplo logs
eudiplo demo --reset --force
When run in an interactive terminal, init opens a wizard for the project
directory, deployment preset, database, storage, key management, public URL,
authentication client, web client, and whether to start immediately. The
generated environment file is created with owner-only permissions. Leaving the
authentication secret empty generates a random secret.
The optional positional directory is the project root for generated Compose,
environment, override, and demo configuration files. It is created when needed.
When no directory is supplied, interactive init and demo commands prompt
with ./ as the default; non-interactive and --yes runs use ./
automatically. --directory <path> is an equivalent flag form. The CLI stores
its absolute path with the instance, so later up, down, logs, and doctor
commands work from any directory.
Each project has one config/ root mounted at /app/config. Global files such
as kms.json live directly in that root; tenant resources live under
config/<tenant-id>/. The initializer does not add a demo tenant unless
--demo-tenant is passed or selected in the wizard. Bundled demo private keys
explicitly use the DB provider, even when Vault is the default for new keys.
All wizard choices are also available as flags for repeatable setup:
| Preset | Database | Storage | Key management |
|---|---|---|---|
minimal |
SQLite | Local filesystem | Database-backed |
standard |
PostgreSQL | S3 via local MinIO | Database-backed |
full |
PostgreSQL | S3 via local MinIO | Vault |
Explicit --database, --storage, and --kms flags override the corresponding
preset choices. Use --yes or --no-interactive to suppress the wizard. Use
--auth-client-id and --auth-client-secret in automation; avoid exposing the
secret in shared shell history.
The older init --demo form remains available for compatibility and generates
demo assets without starting containers. New onboarding instructions should use
demo for evaluation and init for configurable deployments.
Local Tenant Configuration Commands¶
The tenant commands scaffold and manage local config-import folders:
eudiplo config tenant list
eudiplo config tenant create acme --name "Acme GmbH"
eudiplo config tenant create sample --template demo
eudiplo config tenant remove acme --force
create generates info.json and the supported resource subdirectories.
--template demo copies the bundled demo resources instead. Aliases ls,
new, rm, and delete are available.
By default, the selected Compose instance determines the config root. Use
--instance <name> to select another instance or --config-directory <path>
to work with a config root directly. remove deletes only local files; it does
not delete an already imported tenant from a running backend.
demo --reset --force recreates only CLI-managed demo assets and managed demo
volumes.
If a compose-only command is used against an external instance, the CLI returns a
clear error such as logs is not available for externally managed deployments.