Tillered Arctic

services

Manage services for network routing

services

Manage services for network routing.

Aliases: service

Synopsis

arctic services <subcommand> [flags]

Subcommands

SubcommandDescription
listList services
getGet service details
createCreate a new service
updateUpdate service settings
deleteDelete a service

list

List services.

Usage

arctic services list [flags]

Flags

FlagDescription
--source-peerFilter by source peer ID
--target-peerFilter by target peer ID
--requires-interfaceFilter to services requiring MACVLAN

Required Scope

urn:tillered:arctic:services.read

Examples

# List all services
arctic services list

# Filter by target peer
arctic services list --target-peer 01HXYZDEF789...

# JSON output (shorthand)
arctic services list -j

Output

Table output shows a compact view with service configuration flags:

ID                              SOURCE          TARGET          TRANSPORT  FLAGS
svc_01KBYMNEVYN9NC4M3RB3ZGN4RZ  agent-1         agent-2         tcp        I
svc_01KBYMP2220REHB2MSPHT4XJGT  agent-2         agent-1         tcp        I
svc_01KBYMP88A7MBM1KTXBYSFA7VK  agent-2         agent-1         tcp        I
svc_01KBYMP8NZC6MSFBVE8C98AHBX  agent-2         agent-1         tcp        IT

FLAGS: I=interface, T=transparent, Q=qos, -=none

FLAGS Legend:

  • I: Service requires dedicated MACVLAN interface
  • T: Fully transparent mode enabled (no NAT)
  • Q: QoS bandwidth limiting configured
  • -: No special flags set

Use -j for full detailed output with all service properties.


get

Get details of a specific service.

Usage

arctic services get <service-id>

Arguments

ArgumentDescription
service-idService ID to retrieve

Required Scope

urn:tillered:arctic:services.read

Example

arctic services get 01HSVCABC123...

Output

ID:                     svc_01KBYMNEVYN9NC4M3RB3ZGN4RZ
Source Peer ID:         peer_01KBYMHC35F0N070F3XXMEZAZR
Source Peer Name:       agent-1
Target Peer ID:         peer_01KBYMD32Z2RVDE3G5Y9M530QR
Target Peer Name:       agent-2
Transport:              tcp
Requires Interface:     Yes
Interface MAC:          4A:CC:DB:76:CF:59
Actual Interface IPv4:  192.168.3.219
Actual Interface IPv6:  fe80::48cc:dbff:fe76:cf59
Fully Transparent:      No
Created At:             2025-12-08 09:28:44 UTC
Updated At:             2025-12-08 09:28:44 UTC
Data Source:            source

Note: If the source peer is unreachable, the CLI queries the target peer for service data. In this case, interface details may be incomplete and Data Source: local will be shown. The CLI will display a warning: "Note: Source peer unreachable. Interface details may be incomplete."


create

Create a new service.

Usage

arctic services create --target-peer <id> [flags]

Required Flags

FlagDescription
--target-peerTarget peer ID

Optional Flags

FlagDefaultDescription
--source-peerlocalSource peer ID
--transporttcpTransport type: tcp or kcp
--requires-interfacefalseCreate MACVLAN interface
--desired-ipv4IPv4 CIDR for interface
--desired-ipv6IPv6 CIDR for interface
--fully-transparentfalseEnable fully transparent mode
--bandwidth-limit0Bandwidth limit in Mbps (0 = unlimited)

Required Scope

urn:tillered:arctic:services.write

Examples

# Basic service
arctic services create --target-peer 01HXYZDEF789...

# With MACVLAN interface
arctic services create \
  --target-peer 01HXYZDEF789... \
  --requires-interface \
  --desired-ipv4 192.168.100.10/24

# With bandwidth limit
arctic services create \
  --target-peer 01HXYZDEF789... \
  --bandwidth-limit 1000

# Using KCP transport
arctic services create \
  --target-peer 01HXYZDEF789... \
  --transport kcp

Errors

ErrorDescription
--target-peer is requiredMissing target peer
--transport must be 'tcp' or 'kcp'Invalid transport
peer not foundTarget peer does not exist
service limit exceededLicense service limit reached
service already existsDuplicate service between peers

update

Update a service's settings.

Usage

arctic services update <service-id> [flags]

Arguments

ArgumentDescription
service-idService ID to update

Flags

FlagDescription
--requires-interface[=BOOL]Enable/disable MACVLAN interface (use --requires-interface or --requires-interface=true to enable, --requires-interface=false to disable)
--fully-transparent[=BOOL]Enable/disable fully transparent mode (use --fully-transparent or --fully-transparent=true to enable, --fully-transparent=false to disable)
--bandwidth-limitBandwidth limit in Mbps (0 = unlimited)
--desired-ipv4IPv4 CIDR for interface
--desired-ipv6IPv6 CIDR for interface

Required Scope

urn:tillered:arctic:services.write

Examples

# Enable interface requirement
arctic services update 01HSVCABC123... --requires-interface

# Disable interface requirement
arctic services update 01HSVCABC123... --requires-interface=false

# Enable fully transparent mode
arctic services update 01HSVCABC123... --fully-transparent

# Disable fully transparent mode
arctic services update 01HSVCABC123... --fully-transparent=false

# Set bandwidth limit
arctic services update 01HSVCABC123... --bandwidth-limit 500

# Remove bandwidth limit
arctic services update 01HSVCABC123... --bandwidth-limit 0

Errors

ErrorDescription
service ID requiredMissing service ID
no fields to updateNo update flags provided
service not foundService does not exist

delete

Delete a service.

Usage

arctic services delete <service-id> [--yes]

Arguments

ArgumentDescription
service-idService ID to delete

Flags

FlagDescription
--yesSkip confirmation prompt

Required Scope

urn:tillered:arctic:services.write

Examples

# Delete with confirmation
arctic services delete 01HSVCABC123...

# Delete without confirmation
arctic services delete 01HSVCABC123... --yes

Behavior

Deleting a service:

  1. Removes all associated routes
  2. Removes the MACVLAN interface (if created)
  3. Updates firewall rules
  4. Regenerates Pegasus and Tempest configs

See Also