Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
CURFEW_DATA_DIRNoDirectory for local state (registry database, vendor table, watcher logs). Defaults to ~/.curfew/.
CURFEW_PASSWORDYesRouter admin password. Fill this in after copying .env.example to .env.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
router_statusC

Router model, firmware, uptime, CPU and memory, WAN state, LAN, Access Control, device count.

list_devicesB

Every device attached to the router right now, merged with nicknames, owners, tags and vendor.

Also records the sighting in the local registry. Takes a few seconds; the router is slow here.

scan_networkA

Refresh the registry from the router and report what changed: new devices, returned, left.

who_is_newA

Devices first seen after since ('7d', '24h', '30m', or an ISO date). Runs a scan first.

known_devicesB

Everything the registry remembers, online or not. Filter by owner, tag, or online state.

device_historyC

Presence sessions for one device (MAC, nickname, router name or IP): when it joined and left.

system_logB

Recent router log entries, newest first: DHCP leases, Access Control decisions, attack warnings.

category filters by substring, e.g. 'DHCP' or 'Access Control'.
wifi_infoB

SSIDs, channels, security mode and guest network state for the 2.4 GHz and 5 GHz bands.

traffic_statsA

Traffic meter totals for today, yesterday, week, month. Zero unless the meter is enabled.

check_firmwareA

Ask the router whether a firmware update is available. Slow: about 10 seconds.

name_deviceA

Assign a nickname, owner, tags or notes in the local registry (nothing changes on the router).

device: MAC, current nickname, router name or IP. Pass "" to clear a field; omit to leave it alone.
list_groupsB

Device groups (kids, parents, iot, ...) with their members and current access state.

set_group_membershipA

Add a device to a group (member=true) or remove it (member=false). Groups are created on first use.

set_accessA

Turn internet access on or off for a group (e.g. "kids"), an owner (e.g. "Sam") or one device.

Blocking uses the router's Access Control; it is enabled automatically the first time. A manual change lasts until the target's next scheduled change, or until flipped back if it has none.

access_statusB

Whether Access Control is on, which devices are blocked and why, and which schedules are active.

add_scheduleA

Block a group, owner or device every day between start and end (local time, e.g. 21:00 to 07:00).

days: daily, weekdays, weekends, or a list like mon-fri or sat,sun.
Enforced by the background watcher or by apply_schedules.
list_schedulesA

All schedules with whether each is active right now.

remove_scheduleB

Delete a schedule by id. Devices it blocked are released at the next apply.

apply_schedulesB

Evaluate schedules and manual overrides now and push any needed allow/block changes to the router.

reboot_routerA

Reboot the router. Everyone loses internet for about two minutes. Requires confirm=true.

set_guest_wifiA

Turn the guest wifi network on or off. band: 2.4, 5, or both.

pause_deviceA

Instantly cut a group, owner or device off the internet via Eclipse Pause (ARP interception).

This is the immediate cutoff that works on already-connected devices, unlike the MAC block.
The device stays on wifi and reachable on the LAN. Records the pause; the eclipse daemon
(running as root) enforces it within a couple of seconds. Use resume_device to lift it.
resume_deviceA

Lift an Eclipse Pause for a group, owner or device, or all_devices=true for everyone.

list_pausedA

Devices currently held in Eclipse Pause, and whether the enforcement daemon is running.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.3/5.0

Scored across 24 tools

Disambiguation3/5

Several tools cluster around the same concepts: known_devices vs list_devices vs scan_network vs who_is_new all address device inventory, and set_access vs pause_device both cut internet access (distinguished only by a paragraph of prose about MAC vs ARP blocking). The descriptions do help, but an agent must read carefully to pick correctly between the two blocking mechanisms and the four discovery tools.

Naming Consistency3/5

Verb prefixes are used consistently within families (list_*, set_*, add_/remove_*), but many tools are bare noun phrases (known_devices, device_history, system_log, wifi_info, traffic_stats, router_status, access_status), giving a mixed convention. It remains readable but there is no single predictable pattern.

Tool Count4/5

24 tools is on the heavy side, but the domain is genuinely broad (device discovery, groups, two distinct blocking mechanisms, scheduling, wifi, diagnostics, reboot), so most tools earn their place. Slightly over-scoped rather than padded.

Completeness4/5

Coverage is strong: full lifecycle for schedules (add/list/remove/apply) and both pause and access-control paths, plus discovery, naming, status and diagnostics. Minor gaps exist, such as no schedule edit/update and no way to remove devices or groups from the local registry.

Maintenance

ActivityMaintained
ResponsivenessNo issues