App Management
The doover app command group manages the full lifecycle of Doover applications — from scaffolding a new project to building containers and publishing to the platform.
Creating an Application
doover app create
This launches an interactive wizard that:
- Prompts for a name and description
- Fetches the application template from GitHub
- Creates the project directory with the correct structure
- Initialises a git repository
- Updates
doover_config.jsonwith the application metadata
Options
| Option | Default | Description |
|---|---|---|
--name | (interactive) | Application name |
--description | (interactive) | Application description |
--git / --no-git | --git | Initialise a git repository |
--container-registry | GitHub Internal | Container registry to use |
--owner-org-key | "" | Owner organisation key |
--container-profile-key | "" | Container registry profile key |
Listing Applications
doover app list
Lists applications with optional filtering:
# Search by name doover app list --search "pump" # Filter by type doover app list --type docker # Filter by organisation doover app list --organisation "my-org" # Paginate results doover app list --page 2 --per-page 10
Filtering Options
The list command supports field-specific filters with comparison operators:
| Filter | Example | Description |
|---|---|---|
--name | --name pump-ctrl | Exact name match |
--name-contains | --name-contains pump | Case-sensitive substring |
--name-icontains | --name-icontains PUMP | Case-insensitive substring |
--search | --search "water pump" | Full-text search |
--archived | --archived true | Filter by archive status |
--ordering | --ordering "-created_at" | Sort (prefix - for descending) |
Getting Application Details
doover app get my-application
The argument can be an application ID or an exact name match.
Building Applications
Build Container Image
doover app build
Builds the Docker container for the application in the current directory. Uses docker buildx by default for multi-platform builds.
| Option | Default | Description |
|---|---|---|
--buildx / --no-buildx | --buildx | Use Docker Buildx |
Extra arguments are passed through to the underlying docker build command.
Build Widget
doover app build-widget
Builds the application's UI widget. Runs the build command specified in doover_config.json, or falls back to npm run build.
Run Locally
doover app run
Runs the application locally using Docker Compose. Extra arguments are passed through to docker compose.
# Run on a remote Docker host doover app run 192.168.1.100 --port 2375
Publishing
doover app publish
Publishes the application to the Doover platform. This is the primary deployment command and performs several steps:
- Exports the config schema
- Exports the UI schema
- Builds the UI widget
- Uploads the widget
- Updates the application record on the platform
Options
| Option | Default | Description |
|---|---|---|
--build-container | false | Also build and push the container image |
--staging | auto-detected | Force staging mode |
--export-config / --no-export-config | true | Export config schema |
--export-ui / --no-export-ui | true | Export UI schema |
--build-widget / --no-build-widget | true | Build the UI widget |
--put-widget / --no-put-widget | true | Upload the widget |
--buildx / --no-buildx | true | Use Docker Buildx |
--app-name | auto-detected | Application name in config |
--profile | default | Authentication profile |
Full Publish with Container
doover app publish --build-container
This builds and pushes the Docker image in addition to the standard publish steps.
Uploading Widgets
doover app put-widget
Uploads a pre-built widget file to the platform. This is done automatically during publish, but can be run independently.
| Option | Description |
|---|---|
--widget-fp | Path to the widget file (auto-detected if not provided) |
--app-name | Application name in doover_config.json |
--staging | Force staging mode |
Testing and Linting
Run Tests
doover app test
Runs pytest for the application. Extra arguments are passed through to pytest.
Lint
doover app lint doover app lint --fix
Runs ruff linter. Use --fix to auto-fix issues.
Format
doover app format doover app format --fix
Runs ruff formatter.
Archiving
# Archive an application doover app archive my-application # Unarchive doover app unarchive my-application
Channel Viewer
doover app channels
Opens the Doover channel viewer in your browser, connected to the local Device Agent. Useful for inspecting channel data during local development.
| Argument | Default | Description |
|---|---|---|
HOST | localhost | Host address of the local Device Agent |
PORT | 49100 | Port of the local Device Agent |
App Installations
Application installations can be managed through three paths:
doover app-install— top-level commands (not scoped to an app or device)doover app installs— scoped to a specific applicationdoover device app-installs— scoped to a specific device
The doover app installs subcommands mirror the device-scoped commands but take an application ID as the first argument:
# List installations for an application doover app installs list my-app # Create an installation scoped to an application doover app installs create my-app # Deploy an installation doover app installs deploy my-app my-install # List deployments for an installation doover app installs deployments my-app my-install
Available subcommands: list, get, create, update, archive, unarchive, delete, deploy, sync-config-profiles, deployments, deployment.
See Device Management for device-scoped installation commands.
Related Pages
- Doover CLI Overview -- global options and output formats
- Config Schema -- exporting and validating config schemas
- Application Class -- the Python application class these commands deploy