services
Manage services for network routing
services
Manage services for network routing.
Aliases: service
Synopsis
arctic services <subcommand> [flags]Subcommands
| Subcommand | Description |
|---|---|
| list | List services |
| get | Get service details |
| create | Create a new service |
| update | Update service settings |
| delete | Delete a service |
list
List services.
Usage
arctic services list [flags]Flags
| Flag | Description |
|---|---|
--source-peer | Filter by source peer ID |
--target-peer | Filter by target peer ID |
--requires-interface | Filter 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 -jOutput
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, -=noneFLAGS Legend:
I: Service requires dedicated MACVLAN interfaceT: 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
| Argument | Description |
|---|---|
service-id | Service 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: sourceNote: 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
| Flag | Description |
|---|---|
--target-peer | Target peer ID |
Optional Flags
| Flag | Default | Description |
|---|---|---|
--source-peer | local | Source peer ID |
--transport | tcp | Transport type: tcp or kcp |
--requires-interface | false | Create MACVLAN interface |
--desired-ipv4 | IPv4 CIDR for interface | |
--desired-ipv6 | IPv6 CIDR for interface | |
--fully-transparent | false | Enable fully transparent mode |
--bandwidth-limit | 0 | Bandwidth 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 kcpErrors
| Error | Description |
|---|---|
--target-peer is required | Missing target peer |
--transport must be 'tcp' or 'kcp' | Invalid transport |
peer not found | Target peer does not exist |
service limit exceeded | License service limit reached |
service already exists | Duplicate service between peers |
update
Update a service's settings.
Usage
arctic services update <service-id> [flags]Arguments
| Argument | Description |
|---|---|
service-id | Service ID to update |
Flags
| Flag | Description |
|---|---|
--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-limit | Bandwidth limit in Mbps (0 = unlimited) |
--desired-ipv4 | IPv4 CIDR for interface |
--desired-ipv6 | IPv6 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 0Errors
| Error | Description |
|---|---|
service ID required | Missing service ID |
no fields to update | No update flags provided |
service not found | Service does not exist |
delete
Delete a service.
Usage
arctic services delete <service-id> [--yes]Arguments
| Argument | Description |
|---|---|
service-id | Service ID to delete |
Flags
| Flag | Description |
|---|---|
--yes | Skip confirmation prompt |
Required Scope
urn:tillered:arctic:services.write
Examples
# Delete with confirmation
arctic services delete 01HSVCABC123...
# Delete without confirmation
arctic services delete 01HSVCABC123... --yesBehavior
Deleting a service:
- Removes all associated routes
- Removes the MACVLAN interface (if created)
- Updates firewall rules
- Regenerates Pegasus and Tempest configs
See Also
- Create a Service - How-to guide
- Transparent Mode - Source IP preservation
- routes - Manage service routes
- Routing Concepts