Command-line interface

The command-line interface is used for user and manifest management. It’s in a very early stage, so things might change quickly.

The entry point is wildland-cli, with wl shortcut for provided for convenience.

Quick start

Create a user:

$ wl user create User
Generated key: 0x5a7a224844d80b086445
No path specified, using: /users/User
Created: /home/user/.config/wildland/users/User.yaml
Using 0x5a7a224844d80b086445 as default user
Adding 0x5a7a224844d80b086445 to local owners

List users:

$ wl user list
/home/user/.config/wildland/users/User.yaml
  owner: 0x5a7a224844d80b086445
  path: /users/User

Create a container and storage manifests. You need to first create a container, and then attach storage to it:

$ wl container create Container --path /C1
Created: /home/user/.config/wildland/containers/Container.yaml

$ wl storage create local --location /tmp/storage --container Container
Using container: /home/user/.config/wildland/containers/Container.yaml (/.uuid/589e53d9-54ae-4036-95d7-4af261e7746f)
Adding storage ed7594e7-5316-4fd3-b437-bd393b684fb4 directly to the container
Saving: /home/user/.config/wildland/containers/Container.yaml

Mount it all:

$ wl start
Mounting: /home/user/wildland

$ wl container mount Container
Mounting: /home/user/.config/wildland/containers/Container.yaml

$ ls -a ~/wildland
.  ..  .control  .users  .uuid  C1

Global options

  • --base-dir PATH: base config directory (default is ~/.config/wildland)

Configuration file

The file ~/.config/wildland/config.yaml specifies all the defaults. Here are the supported fields.

Note that the @default and @default-owner keys have to be quoted in YAML.

  • user-dir (absolute path (must begin with a single ‘/’)): path to user manifests (default: $HOME/.config/wildland/users)
  • storage-dir (absolute path (must begin with a single ‘/’)): path to storage manifests (default: $HOME/.config/wildland/storage)
  • cache-dir (absolute path (must begin with a single ‘/’)): path to cache storage manifests (default: $HOME/.config/wildland/cache)
  • container-dir (absolute path (must begin with a single ‘/’)): path to container manifests (default: $HOME/.config/wildland/users)
  • bridge-dir (absolute path (must begin with a single ‘/’)): path to bridge manifests (default: $HOME/.config/wildland/bridges)
  • key-dir (absolute path (must begin with a single ‘/’)): path to private key directory (default: $HOME/.config/wildland/keys)
  • mount-dir (absolute path (must begin with a single ‘/’)): FUSE mount path (default: $HOME/wildland)
  • fs-socket-path (absolute path (must begin with a single ‘/’)): Path to FUSE control socket (default: $XDG_RUNTIME_DIR/wlfuse.sock)
  • sync-socket-path (absolute path (must begin with a single ‘/’)): Path to sync daemon control socket (default: $XDG_RUNTIME_DIR/wlsync.sock)
  • alt-bridge-separator (boolean): Use alternative bridge path separator in FUSE, instead of a colon
  • dummy (boolean): use ‘dummy’ keys and signatures instead of Sodium
  • @default (key fingerprint (must begin with 0x)): default user for mounted containers
  • @default-owner (key fingerprint (must begin with 0x)): default user for newly created containers
  • aliases: A dictionary of custom aliases (other than @default and @default-owner)
  • local-hostname (string): hostname recognized for file:// URLs on this machine (default: localhost)
  • local-owners (array): list of owners for which file:// URLs are recognized on this machine
  • default-containers (array): list of container names/paths to mount at startup (‘wl start’); in the same syntax as ‘wl c mount’
  • default-cache-template (string): Default template for container cache storages
  • default-remote-for-container (object): A dictionary of default remote storage for each container

Keys and signatures

Public key cryptography is handled by libsodium.

After generating, the keys are stored in key-dir (by default, ~/.config/wildland/keys). The public-private key pair is stored in <fingerprint>.pub and <fingerprint>.sec files.

Manual pages