Skip to content

Last updated: 2026-10-20

An app has a package ID and a listing: name, tagline, description and icon. Each uploaded version is a build.

create and update read package_id from the current directory's app.json, or accept --package-id <id>. ls takes the package ID as a positional argument.

evenhub create ​

Creates an app and its first build in one operation. Pack your project before running it.

bash
evenhub create my-app.ehpk \
  --name "My App" \
  --tagline "One line about it" \
  --icon icon.png
OptionDescription
--name <text>Required display name
--tagline <text>Required short description
--description <text>Store description
--description-file <path>Read the description from a file
--icon <file.png>24×24 PNG; see Icon rules
--package-id <id>Override the package ID read from app.json
--new-draftUpload again instead of reusing a cached draft

Use either --description or --description-file; supplying both exits 1. Use the file option for multiline copy. Without --icon, the CLI creates the app with a placeholder and reports it in the output. Replace the placeholder before submitting for review:

bash
evenhub update --icon icon.png

An existing package ID exits 4 before a package is sent. For a later version of the same app, use upload.

evenhub update ​

Updates the listing fields supplied in the command.

bash
evenhub update --name "New name" --tagline "New tagline"
evenhub update --description-file ./store.md
evenhub update --icon icon.png

Accepts --name, --tagline, --description, --description-file, --icon and --package-id.

If the app has an approved or published version, or a pending review, the server rejects a direct edit with code 1022 and the CLI exits 7. Submit those listing changes through the portal's review flow.

evenhub ls ​

List all apps on the account, or the builds belonging to one package:

bash
evenhub ls
evenhub ls --channels
evenhub ls com.example.myapp
evenhub ls com.example.myapp --verbose
OptionDescription
--channelsInclude beta and public pointers in the app list
--verboseFetch app details and review status for a package
--jsonReturn one JSON object; see Scripting

The app list is paginated internally. --channels adds one request per app, so enable it when you need channel information.

Builds are ordered by semantic version: 1.0.10 precedes 1.0.9. Only --verbose fetches review details and adds the top-level app and review JSON fields. A failure fetching those details is reported as an error.

Field limits ​

Values are validated locally before submission.

FieldLimit
Name1–20 characters
Tagline1–50 characters
Description1–2000 characters
Build changelogUp to 500 characters

Lengths count Unicode code points. The CLI normalises line endings and trims leading and trailing whitespace before counting.

Icon rules ​

Supply a PNG that meets all four requirements:

PropertyRequirement
FilePNG, at most 1 MB
DimensionsExactly 24×24 pixels
ColourEach pixel is fully transparent or opaque #F4F4F4
StructureVisible pixels form complete 2×2 blocks

For the block check, the CLI scans pixels in raster order. Each unconsumed visible pixel must have visible neighbours to its right, below and below-right. A block cannot start on the final row or column.

Colour is checked across the image before block structure. A colour error includes the pixel coordinates and colour; an incomplete block reports its coordinates. Local validation failure exits 9 and sends nothing.

Use the portal's icon canvas to draw the asset, or follow the UI/UX Design Guidelines.

Deleting an app ​

bash
evenhub rm --app com.example.myapp

This permanently removes the app, its builds and memberships. The CLI asks for confirmation; --yes skips it for scripts. See Builds for deletion rules.