Observed since 20 Oct, 18:06 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Command-line interface for ACE IoT Aerodrome API using aceiot-models package
A command-line interface for interacting with the ACE IoT API using the aceiot-models package. This CLI provides comprehensive access to ACE IoT's fleet management capabilities for IoT devices, sites, and data points.
# Install using pip
pip install aceiot-models-cli
# Or install using uv
uv pip install aceiot-models-cli
# Clone the repository
git clone https://github.com/ACE-IoT-Solutions/aceiot-models-cli.git
cd aceiot-models-cli
# Install using uv (recommended for development)
uv pip install -e .
# Or install using pip
pip install -e .
aceiot-models-cli init
export ACEIOT_API_KEY="your-api-key"
export ACEIOT_API_URL="https://flightdeck.aceiot.cloud/api"
# List all clients
aceiot-models-cli clients list
# Get a specific site
aceiot-models-cli sites get site-name
# Get point timeseries data
aceiot-models-cli points timeseries point-name --start "2024-01-01T00:00:00Z" --end "2024-01-02T00:00:00Z"
# Or enter interactive REPL mode (new!)
aceiot-models-cli repl
--config, -c: Path to configuration file--api-url: API base URL (default: https://flightdeck.aceiot.cloud/api)--api-key: API key for authentication--output, -o: Output format (json or table, default: table)# List clients
aceiot-models-cli clients list [--page N] [--per-page N]
# Get specific client
aceiot-models-cli clients get CLIENT_NAME
# Create new client
aceiot-models-cli clients create --name NAME [--nice-name NAME] [--bus-contact EMAIL] [--tech-contact EMAIL] [--address ADDR]
# List sites
aceiot-models-cli sites list [--page N] [--per-page N] [--client-name NAME] [--collect-enabled] [--show-archived]
# Get specific site
aceiot-models-cli sites get SITE_NAME
# List points updated since a timestamp
acli sites points SITE_NAME --updated-after 2026-01-01T00:00:00Z
# Fetch configured (collect-enabled) points within an inclusive creation range
acli sites points SITE_NAME --configured --created-after 2026-01-01T00:00:00Z --created-before 2026-02-01T00:00:00Z
# Export matching configured points across all pages
acli sites points-export SITE_NAME --configured --updated-after 2026-01-01T00:00:00Z --format json
Site point listing and export accept --created-after, --created-before,
--updated-after, and --updated-before as ISO 8601 strings. All bounds are
inclusive and are applied by the API before pagination. Timezone offsets are
supported; timestamps without an offset are treated as UTC. The API validates
timestamps and date ranges. These filters require aceiot-models 0.3.8 or later.
The same options work with acli points list --site SITE_NAME and
acli points discovered SITE_NAME. In a REPL site context, use
points --configured --updated-after 2026-01-01T00:00:00Z.
# List gateways
aceiot-models-cli gateways list [--page N] [--per-page N] [--show-archived]
# List points
aceiot-models-cli points list [--page N] [--per-page N] [--site SITE_NAME]
# Get timeseries data
aceiot-models-cli points timeseries POINT_NAME --start ISO_TIME --end ISO_TIME
# List discovered BACnet points
aceiot-models-cli points discovered SITE_NAME [--page N] [--per-page N]
# Get batch timeseries data (for many points)
aceiot-models-cli points batch-timeseries -f points.txt --start ISO_TIME --end ISO_TIME [--batch-size 100]
# Export all site timeseries data to file
aceiot-models-cli sites timeseries SITE_NAME --start ISO_TIME --end ISO_TIME --output-file data.parquet
# Upload a local agent package to a client (via gateway context)
# Packages are shared across all gateways for the client.
aceiot-models-cli volttron upload-agent PATH GATEWAY --name PACKAGE_NAME [--description DESC]
# A Git URL can be used in place of PATH. The repository is shallow-cloned,
# packaged, uploaded, and removed locally.
aceiot-models-cli volttron upload-agent git@github.com:ACE-IoT-Solutions/ace-volttron-forward-historian.git GATEWAY
# Create agent configuration on gateway
aceiot-models-cli volttron create-config CONFIG_FILE GATEWAY --agent-identity IDENTITY [--name CONFIG_NAME]
# Edit the active config in $EDITOR, then create a new config revision.
# Use --name when the agent has more than one active named config.
aceiot-models-cli volttron edit-config GATEWAY --agent-identity IDENTITY [--name CONFIG_NAME] [--new-name NEW_NAME]
# Replace a deployed agent package from either a local folder/archive or Git URL.
# The current config association is retained and the replacement is deployed.
aceiot-models-cli volttron replace-agent SOURCE GATEWAY --agent-identity IDENTITY [--package-name NAME]
# Deploy agent (interactive mode - select from existing packages)
aceiot-models-cli volttron deploy GATEWAY
# Interactive prompts guide through:
# 1. Package selection from available uploads
# 2. Agent identity configuration
# 3. Configuration choice (default or custom file)
# 4. For custom: file path selection with validation
# Deploy agent with specific options
aceiot-models-cli volttron deploy GATEWAY --volttron-agent '{"package_name": "pkg", "agent_identity": "id"}' --agent-config '{"agent_identity": "id", "config_name": "cfg"}'
# Quick deploy - upload, configure, and deploy in one command
aceiot-models-cli volttron quick-deploy AGENT_PATH CONFIG_FILE GATEWAY --agent-identity IDENTITY
# List available packages for a client
aceiot-models-cli volttron list-packages CLIENT_NAME
# Get deployment status for a gateway
aceiot-models-cli volttron get-config-package GATEWAY
# Start interactive REPL mode
aceiot-models-cli repl
# In REPL mode, use context switching:
aceiot> use site demo-site
aceiot(site:demo-site)> points list
aceiot(site:demo-site)> timeseries sensor-temp --start 2024-01-01
aceiot(site:demo-site)> use gateway gw-001
aceiot(site:demo-site/gw:gw-001)> back
aceiot(site:demo-site)> exit
# Volttron deployment context:
aceiot> use gateway gw-001
aceiot(gw:gw-001)> use volttron
aceiot(gw:gw-001/volttron)> deploy
# Interactive deployment wizard starts...
# Interactive exploration - list and select resources:
aceiot> use site
Available sites
+------+-----------+---------------------+
| # | Name | Description |
+------+-----------+---------------------+
| 1 | demo-site | demo-site (client1) |
| 2 | test-site | test-site (client2) |
+------+-----------+---------------------+
Enter number (1-2) or press Ctrl+C to cancel: 1
Switched to site context: demo-site
use <type> without a name to list and select resources~/.aceiot-repl-historyuse <type> [<name>]: Switch to context (client, site, gateway, volttron)
back: Exit current contextcontext: Show current contexthelp [command]: Show helpclear: Clear screenexit or quit: Exit REPL (with confirmation if in context)# Run comprehensive serializer tests
aceiot-models-cli test-serializers
Configuration can be provided through:
~/.config/aceiot-models-cli/config.yaml):api_url: https://flightdeck.aceiot.cloud/api
api_key: your-api-key
output_format: table
timeout: 30
ACEIOT_API_URL: API base URLACEIOT_API_KEY: API key for authenticationACEIOT_OUTPUT_FORMAT: Default output formatACEIOT_TIMEOUT: Request timeout in secondsDisplays data in a formatted table with headers and pagination info.
Outputs raw JSON data for programmatic processing:
aceiot-models-cli --output json clients list
# Run serializer tests
aceiot-models-cli test-serializers
# Run pytest tests
pytest tests/
aceiot-models-cli/
src/
aceiot_models_cli/
__init__.py
cli.py # Main CLI entry point
api_client.py # API client implementation
config.py # Configuration management
formatters.py # Output formatters
test_serializers.py # Serializer tests
pyproject.toml
README.md
Complete workflow for deploying Volttron agents to IoT gateways:
Export all timeseries data for a site to file:
The CLI now includes support for BACnet operations:
The CLI provides clear error messages and appropriate exit codes:
Copyright (c) 2025 ACE IoT Solutions
pypistats · 85 observations shown. Missing days are unknown. Source category: overall: without mirrors.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-19 – 2026-10-19 | 11 | 2026-10-20T23:14:06.9888737Z |
| 2026-10-18 – 2026-10-18 | 11 | 2026-10-20T23:14:06.9888737Z |
| 2026-10-17 – 2026-10-17 | 25 | 2026-10-20T23:14:06.9888737Z |
| 2026-10-16 – 2026-10-16 | 7 | 2026-10-20T23:14:06.9888737Z |
| 2026-10-15 – 2026-10-15 | 4 | 2026-10-20T23:14:06.9888737Z |
| 2026-10-14 – 2026-10-14 | 8 | 2026-10-20T23:14:06.9888737Z |
| 2026-10-13 – 2026-10-13 | 19 | 2026-10-20T23:14:06.9888737Z |
| 2026-10-12 – 2026-10-12 | 13 | 2026-10-20T23:14:06.9888737Z |
| 2026-10-11 – 2026-10-11 | 38 | 2026-10-20T23:14:06.9888737Z |
| 2026-10-10 – 2026-10-10 | 47 | 2026-10-20T23:14:06.9888737Z |
| 2026-10-09 – 2026-10-09 | 124 | 2026-10-20T23:14:06.9888737Z |
| 2026-10-08 – 2026-10-08 | 9 | 2026-10-20T23:14:06.9888737Z |
| 2026-10-07 – 2026-10-07 | 2 | 2026-10-20T23:14:06.9888737Z |
| 2026-10-06 – 2026-10-06 | 12 | 2026-10-20T23:14:06.9888737Z |
| 2026-10-05 – 2026-10-05 | 4 | 2026-10-20T23:14:06.9888737Z |
| 2026-10-04 – 2026-10-04 | 6 | 2026-10-20T23:14:06.9888737Z |
| 2026-10-03 – 2026-10-03 | 9 | 2026-10-20T23:14:06.9888737Z |
| 2026-10-02 – 2026-10-02 | 89 | 2026-10-20T23:14:06.9888737Z |
| 2026-10-01 – 2026-10-01 | 3 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-30 – 2026-09-30 | 16 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-29 – 2026-09-29 | 149 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-28 – 2026-09-28 | 5 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-27 – 2026-09-27 | 8 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-26 – 2026-09-26 | 13 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-25 – 2026-09-25 | 11 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-24 – 2026-09-24 | 28 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-23 – 2026-09-23 | 4 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-22 – 2026-09-22 | 2 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-21 – 2026-09-21 | 1 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-20 – 2026-09-20 | 1 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-19 – 2026-09-19 | 5 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-18 – 2026-09-18 | 35 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-17 – 2026-09-17 | 33 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-16 – 2026-09-16 | 7 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-15 – 2026-09-15 | 1 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-14 – 2026-09-14 | 1 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-13 – 2026-09-13 | 3 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-12 – 2026-09-12 | 6 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-11 – 2026-09-11 | 1 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-10 – 2026-09-10 | 3 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-09 – 2026-09-09 | 4 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-08 – 2026-09-08 | 1 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-07 – 2026-09-07 | 7 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-06 – 2026-09-06 | 7 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-05 – 2026-09-05 | 1 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-04 – 2026-09-04 | 2 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-03 – 2026-09-03 | 2 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-02 – 2026-09-02 | 1 | 2026-10-20T23:14:06.9888737Z |
| 2026-09-01 – 2026-09-01 | 7 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-31 – 2026-08-31 | 7 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-30 – 2026-08-30 | 8 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-29 – 2026-08-29 | 1 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-28 – 2026-08-28 | 4 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-27 – 2026-08-27 | 1 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-26 – 2026-08-26 | 3 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-25 – 2026-08-25 | 3 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-24 – 2026-08-24 | 22 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-23 – 2026-08-23 | 6 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-22 – 2026-08-22 | 12 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-21 – 2026-08-21 | 5 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-20 – 2026-08-20 | 3 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-19 – 2026-08-19 | 3 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-18 – 2026-08-18 | 64 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-17 – 2026-08-17 | 13 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-16 – 2026-08-16 | 1 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-15 – 2026-08-15 | 3 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-14 – 2026-08-14 | 7 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-13 – 2026-08-13 | 3 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-12 – 2026-08-12 | 1 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-11 – 2026-08-11 | 2 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-10 – 2026-08-10 | 1 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-09 – 2026-08-09 | 8 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-08 – 2026-08-08 | 3 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-07 – 2026-08-07 | 1 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-06 – 2026-08-06 | 2 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-05 – 2026-08-05 | 1 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-04 – 2026-08-04 | 13 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-03 – 2026-08-03 | 12 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-02 – 2026-08-02 | 4 | 2026-10-20T23:14:06.9888737Z |
| 2026-08-01 – 2026-08-01 | 1 | 2026-10-20T23:14:06.9888737Z |
| 2026-07-28 – 2026-07-28 | 5 | 2026-10-20T23:14:06.9888737Z |
| 2026-07-27 – 2026-07-27 | 1 | 2026-10-20T23:14:06.9888737Z |
| 2026-07-24 – 2026-07-24 | 1 | 2026-10-20T23:14:06.9888737Z |
| 2026-07-23 – 2026-07-23 | 3 | 2026-10-20T23:14:06.9888737Z |
| 2026-07-22 – 2026-07-22 | 4 | 2026-10-20T23:14:06.9888737Z |
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.7.6 | 9 Oct 2026 | 11 |
This describes our collected data; it is not a security assessment.
Shared repository data · GitHub
Observed since 20 Oct, 18:06 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:268cf1748481edfd569700d532b5cfa4173045ca89aec8960ad6f6286b2f57a8