The Modular Agent
sysc-agent is a modular runtime. Each module is a self-contained plugin that adds capabilities to a device — monitoring, management, remote access, and more. You only include what you need.
What is a Module?
A module is a plugin that implements a simple interface. When the agent starts, it discovers all compiled modules, initializes them, and registers their handlers. Each module can expose state, accept configuration, handle remote procedure calls, open WebSocket connections, and push notifications to the platform.
Modules are compiled into the agent binary via build tags. A warehouse monitoring agent might include the system and camera modules, while a container host includes docker and system. The binary stays lean — no unused code shipped.
Module Capabilities
Every module can leverage these six core capabilities provided by the agent runtime.
State
Modules expose real-time state — CPU usage, container lists, pod status, service health. The platform polls state every 5 seconds and renders rich HTML views directly from the agent. See your infrastructure live, as it changes.
Configuration
Each module defines a JSON schema describing its configurable parameters. The platform generates forms from the schema automatically and pushes config changes to agents in real-time. Support per-device and per-profile configurations.
Remote Procedure Calls
Modules register RPC handlers that can be invoked from the platform or API. Start a container, restart a service, run a speedtest, trigger a backup — any action you define becomes a button on the dashboard.
WebSocket Connections
Modules can open persistent bidirectional WebSocket channels proxied through the platform. Used to provide remote terminal access, live log streaming, and real-time data feeds directly in the browser.
Notifications
Modules push notifications to the platform with severity levels — info, warning, and error. Get alerted when disk is full, a container crashes, a service goes down, or any condition your module detects.
AI Integration
The platform's AI assistant can view and navigate module state across your entire fleet. Ask questions in natural language — "which devices have high CPU?" — and get answers based on real module data, helping operators resolve issues fast.
How Modules Work
Agent Starts
The agent binary launches and discovers all compiled modules. Each module initializes and registers its state, config, RPC, and WebSocket handlers with the agent runtime.
Platform Connects
The platform discovers the agent via mTLS. It queries the module registry to learn what modules are available, their schemas, and their capabilities.
State & Config Sync
The platform polls module state on a regular interval. Config changes made in the dashboard are pushed to the agent and applied immediately — no restarts needed.
Actions & Notifications
Operators invoke RPCs from the dashboard. Modules push notifications back to the platform when they detect issues. WebSocket channels stay open in the background when active.
AI Resolves Issues
The AI assistant accesses module state across the fleet, correlates data, and helps operators navigate to the right device and module to resolve problems quickly.
Build Your Own
The module SDK provides a clean interface. Implement it, register your handlers, and your module integrates seamlessly with the agent runtime and platform dashboard.
Your module gets state polling, config management, RPC buttons, WebSocket proxying, notifications, and AI integration — all without writing any platform code.
// sdk.Module interface
type Module interface {
// Module metadata and schema
Meta() *ModuleMetadata
// Register handlers
Init(ctx ModuleContext) error
// Load initial config
LoadConfiguration() (any, error)
// Cleanup on shutdown
Cleanup(ctx ModuleContext) error
}
// Register capabilities in Init()
ctx.OnState(handler)
ctx.OnChange(pattern, handler)
ctx.OnRPC(name, handler)
ctx.OnWebSocket(path, handler)
ctx.Notifier().Notify(notification)