Lab

Hand routine ops to an AI that digs for the root cause

opsctl gives your operations agent a memory: the inventory, the credentials, the dependencies and the expiry dates. Once it knows your estate, it can watch it for you — and act on what it finds.

opsctl

Apache-2.0

Automated operations toolkit for AI agents

View on GitHub

Register your servers, databases, gateways and clusters once. From then on the agent knows how to reach them, what depends on what, and what is about to expire — so it can run the morning sweep, chase a disk alert to its cause, and tell you who breaks if you restart a service.

License
Apache-2.0
Runtime
Python 3.11+
Use it as
CLI or agent plugin
Setup time
About five minutes
What it does for you

Six things you stop doing by hand

None of this requires a monitoring platform, an agent on every host, or a rewrite of how you work. You register what you already run, and the assistant takes the routine off your plate.

The morning sweep arrives on its own

Which certificate expires this week, which disk is filling, which instance is up for renewal — you stop remembering to check. At nine every morning the report lands in your channel of choice.

An alert is where the work starts, not ends

It does not stop at “disk is at 92 percent”. It logs in, finds what is eating the space, fixes it when it safely can, and hands you the cause rather than the symptom.

Know the blast radius before you touch anything

Ask what breaks if this Redis restarts and you get the downstream list from the recorded dependency graph, instead of betting on memory.

Explain your servers once, not every session

Host, port, account and key are registered a single time. Every future conversation already knows them — no more pasting IPs and passwords into chat.

New machines arrive already monitored

Register an ECS instance and eight checks come with it: CPU, memory, disk, IO, bandwidth, SSH brute-force attempts, instance expiry and key rotation. A Postgres brings four of its own.

Credentials stop living in scattered notes

Access details sit in one place and are masked by default when displayed, so nobody has to dig through chat history or shell logs to find a password.

A morning with it

This is what nine o'clock looks like

The sweep groups everything due inside the window into three buckets: act now, keep an eye on it, and the rest collapsed into a count. The same structure goes to Feishu, DingTalk, WeCom or email — the channel never changes the format. Anything critical is always listed in full and never hidden in the collapsed group.

From here you can simply reply “look into pg-main”, and it will log in, trace the disk growth to its source, fix what it safely can, and report the cause.

Daily inspection report
🕐 运维巡检 2026-08-07 · 共 12 项到期: critical=1, warning=4, info=7, other=0

🔴 需立即处理 (2)
- pg-main — 磁盘水位 92% — 到期: 2026-08-07T12:00:00+00:00
- web-prod-1 — SSL 证书到期 — 到期: 2026-08-07T07:00:00+00:00

🟡 需关注 (3)
- redis-cache — 内存水位 85% — 到期: 2026-08-09T16:00:00+00:00
- k8s-prod — Pod 重启次数偏高 — 到期: 2026-08-11T16:00:00+00:00
- keycloak-1 — 会话清理 — 到期: 2026-08-12T16:00:00+00:00

🔵 其余 7 项 (折叠)
Getting started

Three steps, about five minutes

opsctl runs as a standalone command-line tool or as a plugin inside your agent. The plugin route is the one that gives you the automation.

1

Install the plugin

One command pulls it from Git. Enable it, restart, and your agent has thirteen new operations tools.

hermes plugins install \
  https://github.com/EmbraceTeam/DevOps-Agentc.git
hermes plugins enable opsctl-plugin
2

Register your first machine

Give it the host, the login and the key. Default monitoring items are attached automatically, and you can add your own expiry dates on top.

opsctl resource add --type ecs --name web1 \
  --attr host=10.0.0.1 \
  --attr ssh_user=root \
  --attr ssh_password:secret=••••••
3

Ask for a daily sweep

Say it in plain language. The schedule is created for you — no cron expressions, no config files to edit.

Run /ops-inspect at nine every morning

Prefer the terminal? Every one of these also works as a plain opsctl command without an agent involved.

Day to day

You ask in plain language

Once your estate is registered, the assistant resolves names to real connection details on its own. You describe the intent; it works out which resource you mean and how to reach it.

Which certificates expire in the next two weeks?

What breaks if I restart pg-main?

Add the new machine at 10.0.0.8, SSH user root.

The disk alert from this morning — find out what caused it.

What you can register

Twelve types out of the box, extensible to anything

Cloud accounts, virtual machines, databases, gateways, clusters and your own services. Each type knows which fields it needs and which checks it deserves, so registering a resource takes one line rather than a form.

Cloud & virtual machines
ecs
8 checks included
PostgreSQL
postgres
4 checks included
MySQL
mysql
3 checks included
Redis
redis
4 checks included
Kubernetes
k8s
3 checks included
Docker Swarm
dockerswarm
2 checks included
APISIX gateway
apisix
3 checks included
etcd
etcd
3 checks included
Keycloak
keycloak
2 checks included
HBase
hbase
3 checks included
Self-hosted services
service
2 checks included
Alibaba Cloud account
aliyun_account
1 checks included

Running something not on this list? A custom type is a short Python class — no changes anywhere else in the project.

Try it on one server

opsctl is open source under Apache-2.0. Start by registering a single machine and asking for a morning sweep — you will know within a day whether it earns its place.

Get it on GitHub

This is an open lab project under active development. Interfaces may change between releases.