Skip to main content

Services reference

The Omnitron daemon registers 19 built-in Netron RPC services plus the OmnitronDaemon service itself. All share the same auth model (see Daemon / Auth flow) and address the same socket / TCP / HTTP planes.

This page is the canonical inventory: service name, registered Netron service id, purpose, and key methods. Verified against src/services/*.rpc-service.ts.

Quick index

FileService id (Netron)MethodsRole gate (typical)
alert.rpc-service.tsOmnitronAlerts7operator + viewer
auth.rpc-service.tsOmnitronAuth7mixed (some allowAnonymous for signIn)
backup.rpc-service.tsOmnitronBackups6operator
deploy.rpc-service.tsOmnitronDeploy3operator + admin
discovery.rpc-service.tsOmnitronDiscovery3viewer
event-broadcaster.rpc-service.tsOmnitronEvents4mixed
fleet.rpc-service.tsOmnitronFleet8operator
health-check.rpc-service.tsOmnitronHealth4viewer
infrastructure.rpc-service.tsOmnitronInfra3viewer
kubernetes.rpc-service.tsOmnitronKubernetes9operator
log-collector.rpc-service.tsOmnitronLogs3viewer
node-manager.rpc-service.tsOmnitronNodes14operator
pipeline.rpc-service.tsOmnitronPipelines8operator
project.rpc-service.tsOmnitronProject14operator + viewer
secrets.rpc-service.tsOmnitronSecrets4admin
sync.rpc-service.tsOmnitronSync3service-to-service
system-info.rpc-service.tsOmnitronSystemInfo1viewer
telemetry.rpc-service.tsOmnitronTelemetry2service-to-service
trace-collector.rpc-service.tsOmnitronTraces5viewer + operator

Plus the core supervisor:

FileService idMethodsRole gate
daemon/daemon.rpc-service.tsOmnitronDaemon25mixed — see Daemon

Naming convention

Service ids all use the Omnitron<Subsystem> PascalCase shape (no version suffix). Query them via Netron's standard interface mechanism:

import type { IDeployService } from '@omnitron-dev/omnitron/services';

const peer = await client.connect('unix://~/.omnitron/daemon.sock');
const deploy = await peer.queryInterface<IDeployService>('OmnitronDeploy');
await deploy.deployApp({ app: 'api', version: 'v1.2.3' });

The CLI and webapp do exactly this under the hood.

Per-service summary

Each subsection lists the methods you can call directly. For full parameter and return types, refer to src/services/<name>.rpc-service.ts and the src/shared/dto/ types it imports.

OmnitronAlertsalert.rpc-service.ts

Alert rules + delivery for operator-defined thresholds (metric exceeds value, app crashed N times, etc.).

MethodEffect
getRules()All alert rules
createRule(...)Define a new rule
updateRule({id, updates})Patch a rule
deleteRule({id})Remove a rule
getEvents({ruleId?, status?, limit?})Fired-alert events
acknowledgeAlert({alertId, acknowledgedBy})Mark as acknowledged
getSummary()Aggregate counts (open / acknowledged / resolved)

OmnitronAuthauth.rpc-service.ts

User authentication, session management, JWT issuance.

MethodEffect
signIn(credentials)Begin a session; returns JWT + session id
validateToken({token})Verify a JWT; returns claims
validateSession({sessionId})Verify a session id
refreshSession({sessionId})Renew session expiry
signOut({sessionId})Drop session
getActiveSessions()List active sessions (admin)
changePassword({...})Self-service password change

signIn and validateToken are typically allowAnonymous; the rest gate on the session's role.

OmnitronBackupsbackup.rpc-service.ts

Database backup, restore, scheduling.

MethodEffect
createBackup({database, compress?})One-shot backup
listBackups({database?})List available backups
restoreBackup({backupId})Restore from a backup
deleteBackup({backupId})Drop a backup file
setSchedule({database, cron})Configure recurring backups
getSchedule({database})Read current schedule

Driven by omnitron backup commands.

OmnitronDeploydeploy.rpc-service.ts

App deployment workflows.

MethodEffect
deployApp({app, version, strategy?, deployedBy?})Run a deploy with the chosen strategy
rollback({app, deployedBy?})Roll back to previous version
getHistory({app?, limit?})Deployment history

Strategies: rolling | all-at-once | blue-green | canary.

OmnitronDiscoverydiscovery.rpc-service.ts

Discovery of Omnitron-managed targets across Docker and SSH.

MethodEffect
discoverContainers()Scan local Docker
discoverNodes({hosts})SSH-scan given hosts
scanAll()Combined scan

Used by omnitron discover.

OmnitronEventsevent-broadcaster.rpc-service.ts

Cross-process event bus over Netron. Webapp subscribes here for live UI updates.

MethodEffect
subscribe({channels, ...})Register a subscriber; returns subscriberId
unsubscribe({subscriberId})Drop subscription
pushEvent({channel, payload})Publish an event
getStats()Subscriber count + per-channel stats

OmnitronFleetfleet.rpc-service.ts

Cross-node fleet operations: register nodes, drain, set roles.

MethodEffect
listNodes()All registered nodes
getNode({nodeId})Inspect one node
getSummary()Aggregate health / counts
registerNode(registration)Add a node to the fleet
removeNode({nodeId})Remove
setRole({nodeId, role})Promote / demote a node
drainNode({nodeId})Drain workloads off a node
heartbeat({nodeId})Node liveness ping (called by remote daemons)

OmnitronHealthhealth-check.rpc-service.ts

Active health probes — runs HTTP / TCP / DB checks on demand.

MethodEffect
checkApp({appName, port?})Probe one app
checkApps()Probe every app
checkInfrastructure()Probe Postgres / Redis / etc.
checkAll()Full platform health report

OmnitronInfrainfrastructure.rpc-service.ts

Read-only inventory of provisioned infrastructure.

MethodEffect
getState()Full infrastructure state (containers, env, networks)
listContainers()All managed containers
getConnectionInfo({service})Resolved host / port / creds for a logical service

Mutating ops live in the daemon directly (Docker compose runs).

OmnitronKuberneteskubernetes.rpc-service.ts

Kubernetes integration.

MethodEffect
listPods({namespace?, labelSelector?})List pods
getPod({name, namespace?})One pod
deletePod({name, namespace?})Delete pod
getPodLogs({name, namespace?, tail?})Tail logs
listDeployments({namespace?})List deployments
scaleDeployment({name, replicas, namespace?})Scale
restartDeployment({name, namespace?})Rolling restart
listServices({namespace?})List services
execInPod({pod, command, namespace?})Run command in pod

Driven by omnitron k8s ....

OmnitronLogslog-collector.rpc-service.ts

Log query + streaming.

MethodEffect
queryLogs({app?, level?, grep?, lines?, ...})Filter logs
getLogStats()Per-app log size + rotation stats
streamLogs({app?, follow})Streaming subscription

omnitron logs calls queryLogs or streamLogs.

OmnitronNodesnode-manager.rpc-service.ts

Node inventory + health history (14 methods — the largest service beyond OmnitronDaemon).

Method categoryMethods
InventorylistNodes, getNode, addNode, updateNode, removeNode
CheckscheckNodeStatus, checkAllNodes, triggerNodeCheck
HistorygetCheckHistory, getUptimeBar, getNodeHealthSummaries
MisclistSshKeys, getCheckConfig, setCheckConfig

Includes the uptime-bar machinery the webapp uses to draw green/yellow/red availability bars.

OmnitronPipelinespipeline.rpc-service.ts

CI/CD pipeline definition and execution.

MethodEffect
createPipeline(definition)Define a pipeline
getPipeline({id})Read one pipeline
listPipelines()List all
deletePipeline({id})Drop a pipeline
executePipeline({id, params?})Trigger a run
cancelRun({runId})Cancel a running pipeline
getRunStatus({runId})One run's status
listRuns({pipelineId?, limit?})Run history

OmnitronProjectproject.rpc-service.ts

Project + stack registry. 14 methods covering both layers.

Method categoryMethods
ProjectslistProjects, getProject, scanRequirements, addProject, updateProject, removeProject
Project appsgetProjectApps
StackslistStacks, getStack, getStackStatus, createStack, deleteStack, startStack, stopStack

OmnitronSecretssecrets.rpc-service.ts

Encrypted secret CRUD.

MethodEffect
get({key})Decrypt and read one
set({key, value})Encrypt and store
delete({key})Remove
list()List keys (values hidden)

Always gated by admin role.

OmnitronSyncsync.rpc-service.ts

Cross-daemon state synchronisation (service-to-service, used in cluster mode).

MethodEffect
receiveBatch(batch)Accept a sync batch from another daemon
drainBuffer({limit?})Pull pending sync data
getSyncStatus()Current sync state

Not typically called directly by operators.

OmnitronSystemInfosystem-info.rpc-service.ts

Host inventory.

MethodEffect
getSnapshot()CPU / RAM / disk / OS info

The webapp uses this for the host-info card.

OmnitronTelemetrytelemetry.rpc-service.ts

Telemetry ingestion endpoint for titan-telemetry-relay aggregator role. Apps push batches here; the daemon stores and aggregates.

MethodEffect
pushBatch({nodeId, entries})Producer pushes batch; returns ack count
getRelayStats()Internal relay stats

OmnitronTracestrace-collector.rpc-service.ts

Distributed trace ingestion + query.

MethodEffect
ingestSpan(span)Push a single span
ingestBatch({spans})Push many
getTrace({traceId})One trace
queryTraces(filter)Filter by service / duration / status / time range
getServiceMap()Derived service-call topology

Auth role recap

RoleMembersTypical capability
viewerviewer, operator, adminRead-only inspection
operatoroperator, adminLifecycle + scale + exec
adminadmin onlyDestructive: shutdown, secrets, role changes
anonymousanyone with socket accessping, signIn, validateToken

Methods on the same service can vary in role:

  • OmnitronAuth.signIn is anonymous; OmnitronAuth.getActiveSessions is admin-only.
  • OmnitronProject.listProjects is viewer; OmnitronProject.deleteStack is operator.

Querying a service from your code

import { Netron } from '@omnitron-dev/titan/netron';
import type {
IProjectService,
IDeployService,
IFleetService,
} from '@omnitron-dev/omnitron/services';

const netron = new Netron();
const peer = await netron.connect('unix://~/.omnitron/daemon.sock');

const project = await peer.queryInterface<IProjectService>('OmnitronProject');
const projects = await project.listProjects();

const deploy = await peer.queryInterface<IDeployService>('OmnitronDeploy');
await deploy.deployApp({ app: 'api', version: 'v1.2.3', strategy: 'rolling' });

The same code works against a remote daemon by swapping the URL (tcp://server:9700).

Anti-patterns

  • Calling mutating methods over the public TCP plane without RBAC. Operator-level methods change app state — expose only behind proper auth.
  • Long-running calls on RPC. Some methods (deploy, backup restore) can run for minutes — prefer fire-and-forget patterns (start the run; poll status) over a long-held RPC.
  • Hand-rolling JSON for pushBatch / ingestBatch. The contract types are exported — use them; the wire format may evolve.
  • Treating OmnitronSync as a public API. It's daemon-to- daemon plumbing. The shape may change between releases without notice.

See also

  • Daemon — the OmnitronDaemon service + auth model
  • Architecture — where these services live
  • CLI — most commands map directly to one method here
  • Console — webapp uses the same services