Portable native Incus client for Elixir, used by Macus and central Opsmaru.

  • Pure library. OTP application :opsmaru_incus, modules Opsmaru.Incus.*, Opsmaru.Incus.Context and Opsmaru.Incus.ClientSupervisor. There is no application callback: depending on it starts no process, listener, state or backend connection.
  • Explicit connections. Hosts pass immutable Unix-socket or verified HTTPS connection values and a trusted host context on every call. There is no global current remote.
  • Native semantics. Native routes, queries, ETags, error envelopes, operation identities and streaming/upgrade protocols are preserved. Possibly accepted mutations are never replayed automatically.
  • Embeddable gateway. Opsmaru.Incus.Gateway relays native Incus HTTP, WebSockets and SFTP/NBD through a host's own Plug/Cowboy listener under host policy; plug and cowboy are optional. See docs/gateway.md.
  • Traceable coverage. priv/incus/coverage.json maps every declaration of the pinned Incus v7.0.1 Go client to implementation and test evidence. This is not yet a complete client port (complete_port=false); see docs/task-3-9-closure.md.

Usage

{:opsmaru_incus, "~> 0.1.0"}

Published on Hex; releases are listed in CHANGELOG.md.

See docs/embedding.md for host context and connection setup, docs/incus-client.md for the public API and docs/incus-operations.md for the shared agent operations and docs/gateway.md for mounting the gateway.

Development

mise trust && mise install
mix deps.get
mise run check            # format, compile, strict Credo, fixtures, OpenSpec
mise run check:reference  # Go inventory/schema verifier and constants
mise run check:consumer   # build the Hex package and verify it in fresh consumers

Real Incus acceptance is an explicit opt-in against an isolated backend; see docs/real-incus-acceptance.md.

Planning lives in openspec/. Incus reference material is Apache-2.0; see priv/notices.

History

The client was developed inside upmaru/opsmaru and extracted with its history on 2026-10-13 (source revision a00805d). Earlier evidence and CI runs are recorded in docs/foundation-validation.md.