The asymm CLI
A small, focused command-line tool installed alongside Eliya at <#noparse>${JAVA_HOME}#noparse>/bin/asymm (and symlinked from /usr/bin/asymm when installed via .deb / .rpm). The unified entry point for Asymm Systems products: Eliya today, Dial and Forensics in future phases.
Design philosophy
- Multi-product, not Eliya-specific. The pattern
asymm <product> <command>scales as Asymm Systems ships additional products (Eliya, Dial, Forensics). The CLI is the unified entry point. - Wrap real functionality, never simulate it. Every shipped command in the CLI wraps a genuinely useful operation. Phase 1 ships only commands that work today; Phase 2 and Phase 3 commands appear below as design documentation, not stubs.
- Phase-aligned scope. Reserved-namespace commands are documented so the roadmap is legible to engineers evaluating Eliya for multi-year deployments. They are not present in the Phase 1 binary.
Phase 1 commands (shipped today)
The current Phase 1 bin/asymm binary supports three flag-style commands. All three are short, do one thing, and exit. No subcommand tree, no Phase 1 asymm eliya … dispatch.
| Command | Purpose |
|---|---|
asymm (no args; alias asymm --info or -i) | Print vendor metadata + JDK version banner + build info + Eliya feature summary. The default behaviour when invoked with no arguments. |
asymm --version (or -v) | Fork+exec the sibling java -version. Output is the standard Java version banner. |
asymm --help (or -h) | Print usage. Unknown flags also print usage with exit code 1. |
Phase 1 example output: asymm (default --info)
Eliya - Built by Asymm Systems (Pvt) Ltd https://asymm.systems/product/eliya JDK Version: openjdk version "25.0.3" 2026-04-21 OpenJDK Runtime Environment (build 25.0.3+9-Eliya-25.0.3) OpenJDK 64-Bit Server VM (build 25.0.3+9-Eliya-25.0.3, mixed mode, sharing) Build Info: Vendor: Asymm Systems Base: OpenJDK 25 LTS Platform: Linux-x86_64 Built: 2026-06-10T08:34:17Z Eliya Features: java.security: bit-identical to upstream OpenJDK Production profile: -XX:EliyaProfile=Production activates observability defaults Phase 4 profiles: PCIDSS/HIPAA/SOX/FedRAMP/GDPR/ISO27001/SOC2 reserved (not active in Phase 1) See PATCHES.md for the full Eliya footprint over upstream OpenJDK.
Phase 1 example output: asymm --version
The --version command fork+execs the sibling java -version, so the output is identical to running java -version directly:
openjdk version "25.0.3" 2026-04-21 OpenJDK Runtime Environment (build 25.0.3+9-Eliya-25.0.3) OpenJDK 64-Bit Server VM (build 25.0.3+9-Eliya-25.0.3, mixed mode, sharing)
Phase 2 roadmap (reserved namespace; not yet implemented)
The Phase 2 release (target next major release, est. H2 2026) adds bundled local diagnostic tools (Eclipse MAT headless, async-profiler) and wraps them under the asymm eliya subcommand tree. The commands below are design documentation for that roadmap; the Phase 1 binary does not dispatch to any asymm eliya … subcommand. Phase 2 ships a new bin/asymm binary that does.
Today, the same operations are available through standard JDK tooling: jcmd for JFR/heap/GC operations, jmap for heap dumps, jstack for thread dumps, JDK Mission Control (or the jfr CLI) for JFR analysis. The Phase 2 wrappers reduce keystrokes; they don't enable anything new.
| Phase 2 (reserved namespace) | Wraps | Purpose |
|---|---|---|
asymm eliya info | Native diagnostic introspection | Print resolved JAVA_HOME, ELIYA_DIAGNOSTIC_PATH, three-level path resolution (ELIYA_SERVICE_NAME / ELIYA_REPLICA_NAME), container detection, GC selection, JFR status |
asymm eliya doctor | Native preflight checker | Configuration sanity check: diagnostic paths writable, log directories exist, JFR can write to expected paths, GC log path is writable, container support enabled |
asymm eliya verify | sha256sum + gpg --verify | Verify Eliya installation integrity against published checksums + Asymm signing key (today this is two commands; see verify your download) |
asymm eliya versions [--lts] | Local + remote release metadata | List Eliya versions with LTS status, upstream base, support windows |
asymm eliya schedule [--upcoming] [--full] | Local lifecycle calendar | Show Eliya release schedule with quarterly CPU targets (today this is on the lifecycle page) |
asymm eliya profile <pid> [--hw-counters | --wall | --ttsp | --alloc] | JFR or async-profiler (auto-selected) | CPU profiling with sensible defaults; hardware counters, wall-clock, time-to-safepoint, or allocation profiling |
asymm eliya analyze-heap <hprof> [--duplicates | --histogram | --oql] | Eclipse MAT headless | Leak Suspects HTML report, duplicate object analysis, class histogram with retained size, or custom OQL query |
asymm eliya jfr [start|dump|stop|scrub] <pid> | jcmd <pid> JFR.* | Ad-hoc JFR recording start, dump, stop; scrub sanitises a JFR recording for sharing |
asymm eliya install-mat-gui / install-jitwatch / install-jol | On-demand fetcher | Engineer-workstation installers for the full Eclipse MAT GUI, JITWatch, and Java Object Layout. Phase 2 bundles the headless variants by default; these installers are opt-in to keep default install lean. |
Phase 3 roadmap (reserved namespace; Asymm Forensics)
The Phase 3 release (target 2027) introduces Asymm Forensics, a cross-correlation diagnostic platform that ingests JFR, heap, thread, GC, and crash artefacts to produce unified incident reports. The asymm forensics subcommand tree below is design documentation for that release; not implemented in Phase 1 or Phase 2 binaries.
| Phase 3 (reserved namespace) | Purpose |
|---|---|
asymm forensics analyze <bundle> | Cross-artifact correlation analysis |
asymm forensics ingest [--jfr | --heap | --threads | --gc-log | --crash] <file> | Add an artefact to the analysis bundle (JFR recording, heap dump, jstack output, GC log, or crash log) |
asymm forensics report | Generate cross-correlation report |
asymm forensics report --compliance [pci-dss | hipaa | sox | fedramp | gdpr | iso27001 | soc2] | Compliance-aligned audit report. PCI DSS, HIPAA, and SOX are the initial three; FedRAMP, GDPR, ISO 27001, SOC 2 follow as Phase 4 profiles ship. |
The compliance report variants ship aligned with Eliya's Phase 4 profile namespace as those profiles ship. See flag architecture for the Phase 4 profile namespace.
Platform note
The Phase 1 asymm binary ships at <#noparse>${JAVA_HOME}#noparse>/bin/asymm on Linux x86_64 and aarch64 (Phase 1 targets). The .deb and .rpm packages also symlink it to /usr/bin/asymm for PATH convenience. Phase 2 macOS support targets /usr/local/bin/asymm. Phase 3 Windows support targets %PROGRAMFILES%\Asymm\eliya\bin\asymm.exe. All platforms share the same command structure documented above as Phase 2 and Phase 3 subcommand trees ship.
Versioning and compatibility
The asymm CLI follows independent SemVer; CLI version is decoupled from Eliya version (a user on Eliya 25.0.5 might have asymm 1.3 if Phase 2 tooling has matured).
asymm1.x covers Phase 1 (current;--info,--version,--helponly)asymm1.1+ adds Phase 2asymm eliyasubcommand tree as Phase 2 shipsasymm2.x will accompany Asymm Forensics general availability- Backward-compatible commands within major versions; breaking changes require a major version bump
Release cadence. The asymm CLI releases alongside Eliya CPUs by default (quarterly), with patch versions (1.0.x → 1.0.y) for CLI-specific bug fixes between Eliya CPUs as needed. The CLI is small enough that breaking changes are rare; the SemVer commitment is conservative.