# xamal v0.3.0 - Table of Contents

> Mix-first deployment tool for bare-metal Elixir releases over SSH. An Elixir port of Kamal using native releases, Caddy, and Elixir configuration.

## Pages

- [Xamal](readme.md)
- [Upgrading](upgrading.md)
- [Changelog](changelog.md)
- [LICENSE](license.md)

## Modules

- [Xamal](Xamal.md): Xamal deploys Elixir releases to bare metal servers via SSH.
- [Xamal.AppTasks](Xamal.AppTasks.md): Application task implementations.

- [Xamal.Audit](Xamal.Audit.md): Prints the remote deployment audit log for selected hosts.

- [Xamal.BuildTasks](Xamal.BuildTasks.md): Release build and distribution task implementations.

- [Xamal.Commands.App](Xamal.Commands.App.md): Release lifecycle commands: start, stop, status, version, exec, logs.

- [Xamal.Commands.Auditor](Xamal.Commands.Auditor.md): Audit log commands. Appends timestamped entries to the audit log.

- [Xamal.Commands.Base](Xamal.Commands.Base.md): Base module for building shell commands.
- [Xamal.Commands.Builder](Xamal.Commands.Builder.md): Build commands: mix release, tarball creation, SCP distribution.

- [Xamal.Commands.Caddy](Xamal.Commands.Caddy.md): Caddy install, config generation, reload, and management commands.

- [Xamal.Commands.Hook](Xamal.Commands.Hook.md): Hook script execution commands.
- [Xamal.Commands.Lock](Xamal.Commands.Lock.md): Deploy lock commands using mkdir-based locking (identical to Kamal).

- [Xamal.Commands.Prune](Xamal.Commands.Prune.md): Commands for pruning old releases.

- [Xamal.Commands.Server](Xamal.Commands.Server.md): Server management commands: directory creation, bootstrap.

- [Xamal.Commands.Systemd](Xamal.Commands.Systemd.md): Systemd service unit management commands.
- [Xamal.Configuration](Xamal.Configuration.md): Main configuration module.
- [Xamal.Configuration.Boot](Xamal.Configuration.Boot.md): Boot configuration: limit, wait, parallel_roles.

- [Xamal.Configuration.Builder](Xamal.Configuration.Builder.md): Builder configuration: local/docker/remote build settings.

- [Xamal.Configuration.Caddy](Xamal.Configuration.Caddy.md): Caddy reverse proxy configuration.

- [Xamal.Configuration.Env](Xamal.Configuration.Env.md): Environment variable configuration.
- [Xamal.Configuration.HealthCheck](Xamal.Configuration.HealthCheck.md): Health check configuration for deployment readiness.

- [Xamal.Configuration.Release](Xamal.Configuration.Release.md): Elixir release configuration.

- [Xamal.Configuration.Role](Xamal.Configuration.Role.md): Role configuration.
- [Xamal.Configuration.Servers](Xamal.Configuration.Servers.md): Parses the servers section of config.
- [Xamal.Configuration.Ssh](Xamal.Configuration.Ssh.md): SSH connection configuration.

- [Xamal.Configuration.Validator](Xamal.Configuration.Validator.md): Validates the configuration.

- [Xamal.Context](Xamal.Context.md): Runtime deployment context.
- [Xamal.Deployment](Xamal.Deployment.md): High-level deployment orchestration.

- [Xamal.Details](Xamal.Details.md): Prints application and proxy status for selected hosts.

- [Xamal.Docs](Xamal.Docs.md): Inline configuration documentation viewer.

- [Xamal.EnvFile](Xamal.EnvFile.md): Generates env files for deployment.
- [Xamal.HealthCheck](Xamal.HealthCheck.md): HTTP health check polling for deployment readiness.
- [Xamal.LockTasks](Xamal.LockTasks.md): Deploy lock task implementations.

- [Xamal.Prune](Xamal.Prune.md): Prunes old releases on selected hosts.

- [Xamal.Remove](Xamal.Remove.md): Removes remote application and Caddy resources.

- [Xamal.SSH](Xamal.SSH.md): High-level SSH API for executing commands on remote hosts.
- [Xamal.SSH.ConnectionPool](Xamal.SSH.ConnectionPool.md): GenServer managing pooled SSH connections.
- [Xamal.SSH.Host](Xamal.SSH.Host.md): Host struct and helpers for SSH connections.

- [Xamal.SSH.KeyProvider](Xamal.SSH.KeyProvider.md): Custom SSH key callback that serves key data from memory.
- [Xamal.SSH.Runner](Xamal.SSH.Runner.md): Parallel execution runner with configurable concurrency.
- [Xamal.SecretTasks](Xamal.SecretTasks.md): Secret management task implementations.

- [Xamal.Secrets](Xamal.Secrets.md): Loads secrets from .xamal/secrets dotenv files.
- [Xamal.ServerTasks](Xamal.ServerTasks.md): Server task implementations.

- [Xamal.Utils](Xamal.Utils.md): Shell escaping, sensitive value redaction, and general utilities.

- [Xamal.Versions](Xamal.Versions.md): Lists release versions on selected hosts.

## Mix Tasks

- Mix Tasks
  - [mix xamal.app.boot](Mix.Tasks.Xamal.App.Boot.md): Boots the application on servers.
  - [mix xamal.app.exec](Mix.Tasks.Xamal.App.Exec.md): Runs a command in the release context.
  - [mix xamal.app.live](Mix.Tasks.Xamal.App.Live.md): Disables maintenance mode.
  - [mix xamal.app.logs](Mix.Tasks.Xamal.App.Logs.md): Tails or prints application logs.
  - [mix xamal.app.maintenance](Mix.Tasks.Xamal.App.Maintenance.md): Enables maintenance mode.
  - [mix xamal.app.stale_releases](Mix.Tasks.Xamal.App.StaleReleases.md): Lists releases that pruning would remove (read-only preview).
  - [mix xamal.app.start](Mix.Tasks.Xamal.App.Start.md): Starts the service on its active port without a full boot.
  - [mix xamal.app.stop](Mix.Tasks.Xamal.App.Stop.md): Stops application services.
  - [mix xamal.app.version](Mix.Tasks.Xamal.App.Version.md): Prints the current release version on each host.
  - [mix xamal.audit](Mix.Tasks.Xamal.Audit.md): Prints the remote deployment audit log.
  - [mix xamal.build.deliver](Mix.Tasks.Xamal.Build.Deliver.md): Builds and uploads the release tarball.
  - [mix xamal.build.details](Mix.Tasks.Xamal.Build.Details.md): Prints release build configuration.
  - [mix xamal.build.pull](Mix.Tasks.Xamal.Build.Pull.md): Uploads the release tarball to target servers.
  - [mix xamal.build.push](Mix.Tasks.Xamal.Build.Push.md): Builds the release tarball locally.
  - [mix xamal.config](Mix.Tasks.Xamal.Config.md): Prints the resolved Xamal configuration.
  - [mix xamal.deploy](Mix.Tasks.Xamal.Deploy.md): Builds, distributes, and boots the release.
  - [mix xamal.details](Mix.Tasks.Xamal.Details.md): Prints application and proxy status.
  - [mix xamal.docs](Mix.Tasks.Xamal.Docs.md): Prints Xamal configuration documentation.
  - [mix xamal.iex](Mix.Tasks.Xamal.Iex.md): Opens an interactive remote IEx session on the running release.
  - [mix xamal.init](Mix.Tasks.Xamal.Init.md): Generates Xamal configuration, secrets, and sample hooks.

  - [mix xamal.lock.acquire](Mix.Tasks.Xamal.Lock.Acquire.md): Manually acquires the deploy lock.
  - [mix xamal.lock.release](Mix.Tasks.Xamal.Lock.Release.md): Releases the deploy lock.
  - [mix xamal.lock.status](Mix.Tasks.Xamal.Lock.Status.md): Prints deploy lock status.
  - [mix xamal.migrate](Mix.Tasks.Xamal.Migrate.md): Runs the release migrator on the selected hosts.
  - [mix xamal.prune](Mix.Tasks.Xamal.Prune.md): Removes old releases on selected hosts, keeping the retained count.
  - [mix xamal.redeploy](Mix.Tasks.Xamal.Redeploy.md): Deploys without bootstrapping servers.
  - [mix xamal.remove](Mix.Tasks.Xamal.Remove.md): Removes remote release and proxy resources.
  - [mix xamal.rollback](Mix.Tasks.Xamal.Rollback.md): Rolls back to a previous release version.
  - [mix xamal.secrets.extract](Mix.Tasks.Xamal.Secrets.Extract.md): Prints a single configured secret value.
  - [mix xamal.secrets.fetch](Mix.Tasks.Xamal.Secrets.Fetch.md): Fetches secrets from an external secret store.
  - [mix xamal.secrets.print](Mix.Tasks.Xamal.Secrets.Print.md): Prints configured secrets with sensitive values redacted.
  - [mix xamal.server.bootstrap](Mix.Tasks.Xamal.Server.Bootstrap.md): Bootstraps target servers.
  - [mix xamal.server.exec](Mix.Tasks.Xamal.Server.Exec.md): Runs a shell command on target servers.
  - [mix xamal.server.logs](Mix.Tasks.Xamal.Server.Logs.md): Shows Caddy/proxy logs from the servers.
  - [mix xamal.setup](Mix.Tasks.Xamal.Setup.md): Bootstraps servers and deploys the release.
  - [mix xamal.shell](Mix.Tasks.Xamal.Shell.md): Opens an interactive remote shell on the running release.
  - [mix xamal.version](Mix.Tasks.Xamal.Version.md): Prints the installed Xamal version.
  - [mix xamal.versions](Mix.Tasks.Xamal.Versions.md): Lists release versions on servers.

