A Juju charm for installing and operating the Vantage Agent snap.
# Install the local development environment
just env
# Build a local charm artifact with LXD
just packThe pack recipe runs charmcraft pack --use-lxd and produces a platform-specific
.charm artifact, such as vantage-agent_ubuntu@24.04-amd64.charm.
juju deploy ./vantage-agent_ubuntu@24.04-amd64.charmThis is a subordinate charm. Relate it to the principal unit that should run the Vantage Agent:
juju integrate vantage-agent <principal-application>Configure credentials with a single action call. The charm stores all three values in one Juju secret, then uses that secret to download and configure the snap:
juju run vantage-agent/0 configure-credentials \
--client-id "<cluster-client-id>" \
--client-secret "<cluster-client-secret>" \
--vantage-url "https://app.dev.vantagecompute.ai"You can also precreate the secret and pass its ID as charm config:
juju add-secret vantage-agent-configuration-credentials \
vantage-url="https://app.dev.vantagecompute.ai" \
client-id="<cluster-client-id>" \
client-secret="<cluster-client-secret>"
juju grant-secret vantage-agent-configuration-credentials vantage-agent
juju config vantage-agent configuration-credentials-secret-id="<secret-id>"| Option | Description |
|---|---|
configuration-credentials-secret-id |
Optional Juju secret ID containing vantage-url, client-id, and client-secret; the secret must be granted to this application. |
The charm downloads vantage-agent.snap from the Vantage artifacts distribution
using the same client-credentials and bearer-token flow used by Vantage CLI.
# Regenerate uv.lock
just lock
# Install dependencies
just env
# Run tests
just test
# Show the current project version
just versionThe project is managed with uv. Runtime and development dependencies live in
pyproject.toml; requirements.txt is intentionally not generated or used.
Publishing runs from the Publish charm GitHub Actions workflow when a v* tag
is pushed.
Prerequisite repository settings:
- Secret
CHARMCRAFT_AUTH: exported Charmhub credentials fromcharmcraft login --export. - Optional variable
CHARMHUB_CHANNEL: release channel, defaulting tolatest/edge.
Create a release with:
just release 0.1.0The release command bumps pyproject.toml, updates uv.lock, commits the
change, creates tag v0.1.0, and pushes the commit and tag. The tag workflow
verifies the tag matches the pyproject.toml version, packs the charm with
charmcraft pack --use-lxd, and uploads it to Charmhub.
- Issues: GitHub Issues
- Email: info@vantagecompute.ai
Made by Vantage Compute