Skip to main content
The frontend services provide a type-safe abstraction layer over Tauri commands and the container CLI, organized by functionality.

Service Organization

Services are located in src/lib/services/ and organized into modules:
  • containerization/ - Container, image, network, and system operations
  • sqlite/ - Database operations
  • fs-events/ - File system event watchers
  • tray/ - System tray menu management

Container Services

Container Management

Location: src/lib/services/containerization/containers.ts

getAllContainers

Retrieve all containers (running and stopped).
async function getAllContainers(): Promise<Output>
Output
object
error
boolean
Whether the operation failed
stderr
string
Error output from the command
stdout
string
JSON array of container objects

startContainer

Start a stopped container.
async function startContainer(id: string): Promise<Output>
id
string
required
Container ID or name

stopContainer

Stop a running container.
async function stopContainer(id: string): Promise<Output>
id
string
required
Container ID or name

removeContainer

Delete a container.
async function removeContainer(id: string): Promise<Output>
id
string
required
Container ID or name to remove

inspectContainer

Get detailed container information.
async function inspectContainer(id: string): Promise<Output>
id
string
required
Container ID or name
Output.stdout
string
JSON object containing detailed container configuration and state

getContainerLogs

Retrieve container logs.
async function getContainerLogs(id: string): Promise<Output>
id
string
required
Container ID or name

Image Services

Location: src/lib/services/containerization/images.ts

getAllImages

List all container images.
async function getAllImages(): Promise<Output>
Output.stdout
string
JSON array of image objects with tags, IDs, and sizes

pullImage

Pull an image from a registry.
async function pullImage(imageDetails: Array<string>): Promise<Output>
imageDetails
Array<string>
required
Array of image details (e.g., ['nginx:latest'] or ['--platform', 'linux/amd64', 'nginx'])

createPullImageCommand

Create a pull command without executing it (useful for custom execution).
function createPullImageCommand(imageDetails: Array<string>): Command<string>
imageDetails
Array<string>
required
Array of image details and options
Command
Command<string>
Tauri Command object that can be executed or streamed

removeImage

Remove a single image.
async function removeImage(imageReference: string): Promise<Output>
imageReference
string
required
Image name, ID, or digest

removeMultipleImages

Remove multiple images in a single operation.
async function removeMultipleImages(imagesReference: Array<string>): Promise<Output>
imagesReference
Array<string>
required
Array of image references to remove

inspectImage

Get detailed image information.
async function inspectImage(imageReference: string): Promise<Output>
imageReference
string
required
Image name, ID, or digest
Output.stdout
string
JSON object with image layers, configuration, and metadata

importImageFromTar

Import an image from a tar archive.
async function importImageFromTar(path: string): Promise<Output>
path
string
required
Absolute path to the tar file

exportImageToTar

Export an image to a tar archive.
async function exportImageToTar(
  imageReference: string,
  path: string,
  additionalOptions?: string[]
): Promise<Output>
imageReference
string
required
Image to export
path
string
required
Destination path for the tar file
additionalOptions
string[]
Optional flags (e.g., ['--arch', 'aarch64'])

System Services

Location: src/lib/services/containerization/system/service.ts

startContainerization

Start the container service.
async function startContainerization(): Promise<Output>

stopContainerization

Stop the container service.
async function stopContainerization(): Promise<Output>

containerizationStatus

Check if the container service is running.
async function containerizationStatus(): Promise<Output>
Output.stdout
string
Service status information

Setup Services

Location: src/lib/services/containerization/setup.ts

hasContainerCli

Check if the container CLI is available.
async function hasContainerCli(): Promise<boolean>
result
boolean
true if the container command is available, false otherwise
Create symlinks for container binaries with elevated privileges.
async function createSymlink(): Promise<Output>
Creates symlinks for:
  • Container binaries → /usr/local/bin/container
  • Container API server → /usr/local/bin/container-api
  • Libexec directory → /usr/local/libexec

DNS Services

Location: src/lib/services/containerization/dns.ts

createDns

Create a DNS entry for container networking.
async function createDns(domain: string): Promise<Output>
domain
string
required
Domain name to create (e.g., “example.local”)

getAllDnsConfig

List all DNS configurations.
async function getAllDnsConfig(): Promise<Output>
Output.stdout
string
Space-separated list of DNS entries

Registry Services

Location: src/lib/services/containerization/registry/auth.ts

registryLogin

Authenticate with a container registry.
async function registryLogin(options: RegistryLoginParams): Promise<Output>
options
RegistryLoginParams
required
username
string
required
Registry username
password
string
required
Registry password
registry
string
required
Registry URL (e.g., “docker.io”, “ghcr.io”)
scheme
string
Authentication scheme (defaults to “auto”)

registryLogout

Log out from a container registry.
async function registryLogout(options: RegistryLogoutParams): Promise<Output>
options
RegistryLogoutParams
required
registry
string
required
Registry URL to logout from

Database Services

Location: src/lib/services/sqlite/registry.ts

addRegistry

Add a container registry to the database.
async function addRegistry(registryData: InsertRegistry): Promise<void>
registryData
InsertRegistry
required
name
string
required
Display name for the registry
url
string
required
Registry URL (must be unique)
loggedIn
boolean
Whether the user is currently logged in (defaults to false)

Utility Functions

Location: src/lib/services/containerization/utils.ts

createContainerCommand

Create a container CLI command.
function createContainerCommand(args: string[]): Command<string>
args
string[]
required
Command arguments
Command
Command<string>
Tauri shell Command instance

validateCommandOutput

Validate and normalize command output.
function validateCommandOutput(output: ChildProcess<string>): Output
output
ChildProcess<string>
required
Raw output from Tauri shell command
Output
object
error
boolean
true if the command failed (null exit code or empty stdout)
stderr
string
Error output
stdout
string
Standard output

Type Definitions

Output

Standard output format for all service operations.
type Output = {
  error: boolean;
  stderr: string;
  stdout: string;
};

RegistryLoginParams

type RegistryLoginParams = {
  username: string;
  password: string;
  registry: string;
  scheme?: string;
};

RegistryLogoutParams

type RegistryLogoutParams = {
  registry: string;
};

InsertRegistry

type InsertRegistry = {
  name: string;
  url: string;
  loggedIn?: boolean;
};

Build docs developers (and LLMs) love