OpenOcta AIOps Agent
Operate OpenOcta as a named product without turning ordinary observability or
incident work into an OpenOcta installation. OpenOcta is a Go and Wails agent
runtime that can run as a local desktop application or a network-facing service,
connect models and operational tools, retain local knowledge, and execute tools.
Those capabilities make configuration and authority boundaries more important
than the happy-path demo.
This skill was audited against upstream commit
6b130c72cdc40d8b3bed304d3e6a64345e3d2622, which is tagged v1.0.8 and was
released on 2026-08-24. The repository README still calls v1.0.6 latest, so use
the GitHub release API or an exact tag for current version claims. See
source audit and version drift.
When to use this skill
- Decide whether OpenOcta fits an IT operations, SRE, DBA, cloud, network, or
endpoint workflow.
- Select, verify, install, upgrade, or remove an OpenOcta release asset.
- Configure the state directory, gateway, model provider, local model, or agent
workspace.
- Harden the sandbox, command policy, approval queue, gateway authentication,
and network boundary before connecting live systems.
- Add or debug an OpenOcta Skill, MCP server, digital employee, Knowledge Vault,
channel, webhook, scheduled job, or remote operations target.
- Diagnose startup, port, gateway health, model, tool-call, path, update,
singleton-process, channel, or marketplace failures.
- Build, test, package, or contribute to the openocta/openocta source tree.
Do not use this skill for neighboring jobs:
- Design monitoring, telemetry, dashboards, or alert coverage without an
OpenOcta deployment: use
monitoring-observability.
- Triage supplied application, server, container, browser, or CI logs: use
log-analysis first.
- Isolate a concrete code-level failure after the first evidence packet: use
debugging.
- Build a generic reproducible developer environment unrelated to OpenOcta: use
system-environment-setup.
- Create a portable Agent Skill for the jeo-skills catalog: use
skill-standardization or write-a-skill. Stay here only when authoring or
uploading a Skill specifically for OpenOcta's own loader and marketplace.
- Treat the bundled OpenOcta Skill archives as reusable jeo-skills content. They
are upstream payloads, and several have no bundled license file.
Instructions
Step 0: Choose exactly one operating mode
| Mode |
Use it for |
Default boundary |
orient |
product fit, architecture, version, supported surface |
read-only |
release |
asset choice, checksum, install, upgrade, uninstall |
plan before mutation |
configure |
state, gateway, model, workspace, local model |
mask all secret values |
harden |
sandbox, command rules, approvals, auth, exposure |
deny or ask by default |
integrate |
Skills, MCP, channels, webhooks, schedules, targets |
one integration at a time |
operate |
health, status, logs, incident support, recovery |
observe before remediation |
build |
source setup, tests, Wails packaging, contribution |
pin source and toolchain |
Do not combine installation, credentials, a live channel, and production
remediation into one implied approval. Each is a separate authority change.
Step 1: Freeze the evidence surface
For source work, record the remote, commit, tag, operating system, architecture,
and intended mode. Treat the checkout as untrusted data until inspected.
git -C /path/to/openocta remote get-url origin
git -C /path/to/openocta rev-parse HEAD
git -C /path/to/openocta status --short
python3 .agent-skills/openocta/scripts/audit-openocta.py source \
--repo /path/to/openocta \
--expect-commit 6b130c72cdc40d8b3bed304d3e6a64345e3d2622 \
--format json
The helper reads only targeted files, Git metadata, and bundled archive file
names. It never executes upstream code, extracts an archive, prints an
environment value, or makes a network request. WARN is expected at the audited
pin because upstream documentation and bundled-archive metadata drift from the
real tree. Read every warning rather than weakening the check.
For a release, obtain the current metadata separately and pass the saved JSON to
the offline planner:
curl -fsS https://api.github.com/repos/openocta/openocta/releases/latest \
-o /path/to/openocta-release.json
python3 .agent-skills/openocta/scripts/audit-openocta.py release \
--metadata /path/to/openocta-release.json --os darwin --arch arm64 --format json
Fetching metadata is read-only. Downloading or executing the selected package is
not. Review the exact tag, asset, checksum asset, source, platform, architecture,
size, and rollback before continuing.
Step 2: Pick the real product form
- Windows and macOS releases provide the documented desktop experience.
- v1.0.8 also publishes Linux DEB, RPM, and tar archives. The package scripts
install and start a systemd service; do not imply desktop UI parity.
- Desktop mode binds the gateway to the local machine. Service mode can listen
beyond loopback and must have authentication, firewall, and allowlist review.
- Building from source is a different path from installing a signed release.
Do not mix release troubleshooting with an unpinned development build.
Use install, configuration, and upgrade
for the release matrix, checksum workflow, paths, environment variables, and
rollback contract.
Step 3: Preflight configuration without exposing secrets
The normal state directory is ~/.openocta on Unix-like systems and the
OpenOcta directory under %APPDATA% on Windows. The usual config file is
openocta.json in that state directory. OPENOCTA_STATE_DIR and
OPENOCTA_CONFIG_PATH override them; legacy CLAWDBOT_* aliases remain active
when the OpenOcta names are empty.
Audit a config before editing or starting a service:
python3 .agent-skills/openocta/scripts/audit-openocta.py config \
--config ~/.openocta/openocta.json --run-mode desktop --format json
The report shows only posture booleans, counts, enabled integration names, and
sensitive field names. It never prints credential values, internal hostnames,
allowed paths, webhook URLs, or model endpoints.
Configuration rules:
- Keep one source of truth for the state and config paths.
- Put provider keys in a protected environment or secret manager when
possible. Do not paste them into chat, logs, commits, screenshots, or reports.
- Record provider and model identifiers separately from credentials.
- Set
cozeloop.enabled: false explicitly unless trace export is approved with
an operator-owned workspace and credential. At the audited pin, omitting the
section enables export with bundled defaults.
- Set
localAgents.enabled: false unless delegation to installed Codex, Cursor,
OpenCode, or related CLIs is intended; an empty allowlist means all recognized
installed agents, and requireApproval is not enforced by the tool at this pin.
- Keep desktop and service profiles separate when their trust boundaries differ.
- Back up the config and state indexes before migration; do not claim sessions,
Knowledge Vault data, Skills, and credentials are one atomic backup.
- Restart only after reviewing the diff and the expected gateway consequence.
Step 4: Harden before granting operations authority
Use security and live operations
and enforce these minimums:
- Gateway: service mode requires a nonempty token, restricted bind scope,
firewall rules, and a verified health probe from the intended network only.
- Sandbox: enable it and allow only the specific workspace, runbook, and
artifact paths needed for the task.
- Network: allow only required model, monitoring, ticket, cloud, and MCP
destinations. "Local-first" does not mean no network egress.
- Command policy: keep unmatched commands at
ask or deny; do not make
broad shells or production CLIs automatic.
- Approval queue: enable it for live operations, use short whitelist TTLs,
and approve the exact command rather than a session-wide bypass when possible.
- Tools: treat Bash, file writes, process termination, scheduled jobs, browser
control, and gateway calls as separate capabilities.
- Outbound traces: explicitly disable CozeLoop unless the user approves the
data boundary and supplies their own workspace and credential.
- Local CLI delegation: disable it or allowlist exact agents, then govern the
local_agent tool through the effective command and approval policy.
- Audit: preserve who requested, approved, executed, and verified each
consequential operation without recording secrets.
A config audit BLOCKED result is a stop condition. Do not work around a missing
service token or remote-uninstall exposure by lowering the checker.
Step 5: Add integrations one authority at a time
OpenOcta's Skills are not the jeo-skills catalog. Its loader resolves workspace,
managed, bundled, and extra directories with precedence. Inspect the selected
Skill or digital employee, its scripts, dependencies, network targets, license,
and requested credentials before installation.
For MCP, channels, webhooks, schedules, and operations targets:
- Read the exact upstream config contract for the pinned release.
- Create the least-privilege account or token outside chat.
- Configure an allowlist before enabling inbound messages or webhooks.
- Keep receive-only, send, execute, and administer permissions separate.
- Test in a non-production target with a harmless read-only task.
- Confirm before enabling a channel, posting a message, registering a webhook,
installing marketplace content, or scheduling an autonomous run.
- Verify the accepted state in OpenOcta and at the external system.
- Define disable, token-revoke, and rollback steps before go-live.
See Skills, MCP, channels, and builds.
Step 6: Observe before remediating
Start troubleshooting with read-only evidence:
openocta gateway status --json
openocta gateway health --json
Then inspect the resolved state/config paths, process mode, port, local logs,
release tag, model provider, recent config diff, and the smallest failing
integration. Do not use gateway call until the method and parameters are known;
some methods mutate configuration, approvals, jobs, Skills, or channels.
Important drift at the audited pin:
- Runtime source resolves the default gateway port to 18900.
- One CLI help string still says 18789. Treat 18900 as source truth unless
configuration or environment overrides it.
- Packaged startup can terminate other processes named
openocta or
openocta-launcher. Use OPENOCTA_SKIP_SINGLETON_KILL=1 only for a bounded
debugging case, not as a permanent fix for duplicate instances.
- Release and source version labels can disagree. Capture executable output,
commit, release tag, and package name separately.
Production remediation, process termination, service restart, approval action,
file mutation, remote command, rollback, or uninstall requires review and
confirmation before execution. Afterward, verify the target service and user
impact, not only the OpenOcta response.
Step 7: Build and contribute against the pinned tree
At the audited commit, source truth is Go 1.26 even though the README badge says
Go 1.24+. The root Makefile builds the Vite UI with npm, embeds assets, and then
builds the Go binary. Wails and platform packaging add separate toolchains.
Recommended verification order:
cd /path/to/openocta/src && go test ./...
cd /path/to/openocta/ui && npm test
cd /path/to/openocta && make build
Do not run dependency installation, platform signing, notarization, package
publication, or a release job merely to answer a source question. For a code
change, run the narrow package tests first, then the broader suite. Preserve
Apache-2.0 notices and do not copy the bundled third-party Skill archives into a
new distribution without independent license evidence.
Step 8: Verify the requested outcome
Before reporting completion, verify the relevant layer:
- release: exact asset checksum, installed version, source, and rollback;
- gateway: expected bind address, port, authentication, and health;
- model: provider/model selected and a bounded test succeeds without exposing
the key;
- security: sandbox, network, command policy, approvals, and audit records;
- integration: allowlist, least privilege, one harmless end-to-end event, and
disable path;
- operations task: source evidence, approved action, target-side result, and
no unexpected blast radius;
- build: pinned commit, tool versions, tests, artifact path, and whether the
artifact was merely built or actually installed.
Examples
Example 1: Fit check
Request: "Would OpenOcta help our Prometheus and Kubernetes on-call flow?"
Use orient. Map the required data sources, read-only queries, desired outputs,
and existing incident ownership. Compare that contract with OpenOcta's Skills,
MCP, gateway, and approval model. Do not install it as the first step.
Example 2: Safe desktop install
Request: "Install OpenOcta on this Apple Silicon Mac."
Use release. Read current GitHub release metadata, select the darwin arm64 DMG,
review the checksums file and publisher boundary, state what the installer will
change, obtain confirmation, then install and verify the executable version and
local gateway health.
Example 3: Service hardening
Request: "Expose OpenOcta on a Linux ops host."
Use harden before release. Require a gateway token, dedicated service user,
restricted bind/firewall, explicit state directory, sandbox/network allowlists,
command policy, approval queue, logs, backup, and rollback. Do not expose the
systemd service with the sample root-owned state directory as an unexplained
default.
Example 4: Channel setup
Request: "Connect our Feishu bot so alerts can wake OpenOcta."
Use integrate. Separate receiving, replying, and executing tasks. Review bot
scope and the OpenOcta sender allowlist, configure credentials privately, test a
read-only non-production event, obtain confirmation before go-live, and verify
both Feishu and OpenOcta state.
Example 5: Route generic work outward
Request: "Design SLO dashboards and alert thresholds for our API."
Route to monitoring-observability. OpenOcta is one possible execution surface,
not the owner of the observability design.
Best practices
- Pin releases and source commits; do not trust stale version prose.
- Plan read-only before installing, connecting, sending, or executing.
- Keep desktop and service trust boundaries separate.
- Never print secret values; report presence and posture only.
- Use allowlists and short approvals, not broad persistent bypasses.
- Treat Skills, MCP servers, channels, webhooks, and schedules as code and
authority, not cosmetic extensions.
- Preserve evidence from the monitored system, not only the agent narrative.
- Verify target-side results and rollback after every consequential action.
- Disable unapproved CozeLoop export and local CLI delegation explicitly; do
not rely on omission as a safe default.
- Keep OpenOcta-specific operation here and generic ops design in its canonical
skill.
- Re-audit current main before claiming behavior newer than v1.0.8.
References
1---2name: openocta3description: Operate openocta/openocta, the Apache-2.0 desktop and service AIOps agent for natural-language inspection, alert analysis, data queries, remediation, local knowledge, Skills, MCP, channels, and webhooks. Route one request to fit check, release install or upgrade, gateway and model configuration, security hardening, integration, troubleshooting, or source build. Use when the user names OpenOcta, Open Octa, its `openocta` CLI, port 18900, Knowledge Vault, OpenOcta Skills, digital employees, or the openocta/openocta repository. Require confirmation before installer execution, credentials, service or channel activation, marketplace installs, production remediation, or uninstall. Route generic observability design to `monitoring-observability` and raw log triage to `log-analysis`.4license: Apache-2.05---67# OpenOcta AIOps Agent89Operate OpenOcta as a named product without turning ordinary observability or10incident work into an OpenOcta installation. OpenOcta is a Go and Wails agent11runtime that can run as a local desktop application or a network-facing service,12connect models and operational tools, retain local knowledge, and execute tools.13Those capabilities make configuration and authority boundaries more important14than the happy-path demo.1516This skill was audited against upstream commit17`6b130c72cdc40d8b3bed304d3e6a64345e3d2622`, which is tagged `v1.0.8` and was18released on 2026-08-24. The repository README still calls v1.0.6 latest, so use19the GitHub release API or an exact tag for current version claims. See20[source audit and version drift](references/source-audit-and-version-drift.md).2122## When to use this skill2324- Decide whether OpenOcta fits an IT operations, SRE, DBA, cloud, network, or25 endpoint workflow.26- Select, verify, install, upgrade, or remove an OpenOcta release asset.27- Configure the state directory, gateway, model provider, local model, or agent28 workspace.29- Harden the sandbox, command policy, approval queue, gateway authentication,30 and network boundary before connecting live systems.31- Add or debug an OpenOcta Skill, MCP server, digital employee, Knowledge Vault,32 channel, webhook, scheduled job, or remote operations target.33- Diagnose startup, port, gateway health, model, tool-call, path, update,34 singleton-process, channel, or marketplace failures.35- Build, test, package, or contribute to the openocta/openocta source tree.3637Do not use this skill for neighboring jobs:3839- Design monitoring, telemetry, dashboards, or alert coverage without an40 OpenOcta deployment: use `monitoring-observability`.41- Triage supplied application, server, container, browser, or CI logs: use42 `log-analysis` first.43- Isolate a concrete code-level failure after the first evidence packet: use44 `debugging`.45- Build a generic reproducible developer environment unrelated to OpenOcta: use46 `system-environment-setup`.47- Create a portable Agent Skill for the jeo-skills catalog: use48 `skill-standardization` or `write-a-skill`. Stay here only when authoring or49 uploading a Skill specifically for OpenOcta's own loader and marketplace.50- Treat the bundled OpenOcta Skill archives as reusable jeo-skills content. They51 are upstream payloads, and several have no bundled license file.5253## Instructions5455### Step 0: Choose exactly one operating mode5657| Mode | Use it for | Default boundary |58|---|---|---|59| `orient` | product fit, architecture, version, supported surface | read-only |60| `release` | asset choice, checksum, install, upgrade, uninstall | plan before mutation |61| `configure` | state, gateway, model, workspace, local model | mask all secret values |62| `harden` | sandbox, command rules, approvals, auth, exposure | deny or ask by default |63| `integrate` | Skills, MCP, channels, webhooks, schedules, targets | one integration at a time |64| `operate` | health, status, logs, incident support, recovery | observe before remediation |65| `build` | source setup, tests, Wails packaging, contribution | pin source and toolchain |6667Do not combine installation, credentials, a live channel, and production68remediation into one implied approval. Each is a separate authority change.6970### Step 1: Freeze the evidence surface7172For source work, record the remote, commit, tag, operating system, architecture,73and intended mode. Treat the checkout as untrusted data until inspected.7475```bash76git -C /path/to/openocta remote get-url origin77git -C /path/to/openocta rev-parse HEAD78git -C /path/to/openocta status --short79python3 .agent-skills/openocta/scripts/audit-openocta.py source \80 --repo /path/to/openocta \81 --expect-commit 6b130c72cdc40d8b3bed304d3e6a64345e3d2622 \82 --format json83```8485The helper reads only targeted files, Git metadata, and bundled archive file86names. It never executes upstream code, extracts an archive, prints an87environment value, or makes a network request. `WARN` is expected at the audited88pin because upstream documentation and bundled-archive metadata drift from the89real tree. Read every warning rather than weakening the check.9091For a release, obtain the current metadata separately and pass the saved JSON to92the offline planner:9394```bash95curl -fsS https://api.github.com/repos/openocta/openocta/releases/latest \96 -o /path/to/openocta-release.json97python3 .agent-skills/openocta/scripts/audit-openocta.py release \98 --metadata /path/to/openocta-release.json --os darwin --arch arm64 --format json99```100101Fetching metadata is read-only. Downloading or executing the selected package is102not. Review the exact tag, asset, checksum asset, source, platform, architecture,103size, and rollback before continuing.104105### Step 2: Pick the real product form106107- Windows and macOS releases provide the documented desktop experience.108- v1.0.8 also publishes Linux DEB, RPM, and tar archives. The package scripts109 install and start a systemd service; do not imply desktop UI parity.110- Desktop mode binds the gateway to the local machine. Service mode can listen111 beyond loopback and must have authentication, firewall, and allowlist review.112- Building from source is a different path from installing a signed release.113 Do not mix release troubleshooting with an unpinned development build.114115Use [install, configuration, and upgrade](references/install-configuration-and-upgrade.md)116for the release matrix, checksum workflow, paths, environment variables, and117rollback contract.118119### Step 3: Preflight configuration without exposing secrets120121The normal state directory is `~/.openocta` on Unix-like systems and the122OpenOcta directory under `%APPDATA%` on Windows. The usual config file is123`openocta.json` in that state directory. `OPENOCTA_STATE_DIR` and124`OPENOCTA_CONFIG_PATH` override them; legacy `CLAWDBOT_*` aliases remain active125when the OpenOcta names are empty.126127Audit a config before editing or starting a service:128129```bash130python3 .agent-skills/openocta/scripts/audit-openocta.py config \131 --config ~/.openocta/openocta.json --run-mode desktop --format json132```133134The report shows only posture booleans, counts, enabled integration names, and135sensitive field names. It never prints credential values, internal hostnames,136allowed paths, webhook URLs, or model endpoints.137138Configuration rules:1391401. Keep one source of truth for the state and config paths.1412. Put provider keys in a protected environment or secret manager when142 possible. Do not paste them into chat, logs, commits, screenshots, or reports.1433. Record provider and model identifiers separately from credentials.1444. Set `cozeloop.enabled: false` explicitly unless trace export is approved with145 an operator-owned workspace and credential. At the audited pin, omitting the146 section enables export with bundled defaults.1475. Set `localAgents.enabled: false` unless delegation to installed Codex, Cursor,148 OpenCode, or related CLIs is intended; an empty allowlist means all recognized149 installed agents, and `requireApproval` is not enforced by the tool at this pin.1506. Keep desktop and service profiles separate when their trust boundaries differ.1517. Back up the config and state indexes before migration; do not claim sessions,152 Knowledge Vault data, Skills, and credentials are one atomic backup.1538. Restart only after reviewing the diff and the expected gateway consequence.154155### Step 4: Harden before granting operations authority156157Use [security and live operations](references/security-and-live-operations.md)158and enforce these minimums:159160- **Gateway**: service mode requires a nonempty token, restricted bind scope,161 firewall rules, and a verified health probe from the intended network only.162- **Sandbox**: enable it and allow only the specific workspace, runbook, and163 artifact paths needed for the task.164- **Network**: allow only required model, monitoring, ticket, cloud, and MCP165 destinations. "Local-first" does not mean no network egress.166- **Command policy**: keep unmatched commands at `ask` or `deny`; do not make167 broad shells or production CLIs automatic.168- **Approval queue**: enable it for live operations, use short whitelist TTLs,169 and approve the exact command rather than a session-wide bypass when possible.170- **Tools**: treat Bash, file writes, process termination, scheduled jobs, browser171 control, and gateway calls as separate capabilities.172- **Outbound traces**: explicitly disable CozeLoop unless the user approves the173 data boundary and supplies their own workspace and credential.174- **Local CLI delegation**: disable it or allowlist exact agents, then govern the175 `local_agent` tool through the effective command and approval policy.176- **Audit**: preserve who requested, approved, executed, and verified each177 consequential operation without recording secrets.178179A config audit `BLOCKED` result is a stop condition. Do not work around a missing180service token or remote-uninstall exposure by lowering the checker.181182### Step 5: Add integrations one authority at a time183184OpenOcta's Skills are not the jeo-skills catalog. Its loader resolves workspace,185managed, bundled, and extra directories with precedence. Inspect the selected186Skill or digital employee, its scripts, dependencies, network targets, license,187and requested credentials before installation.188189For MCP, channels, webhooks, schedules, and operations targets:1901911. Read the exact upstream config contract for the pinned release.1922. Create the least-privilege account or token outside chat.1933. Configure an allowlist before enabling inbound messages or webhooks.1944. Keep receive-only, send, execute, and administer permissions separate.1955. Test in a non-production target with a harmless read-only task.1966. Confirm before enabling a channel, posting a message, registering a webhook,197 installing marketplace content, or scheduling an autonomous run.1987. Verify the accepted state in OpenOcta and at the external system.1998. Define disable, token-revoke, and rollback steps before go-live.200201See [Skills, MCP, channels, and builds](references/skills-mcp-channels-and-builds.md).202203### Step 6: Observe before remediating204205Start troubleshooting with read-only evidence:206207```bash208openocta gateway status --json209openocta gateway health --json210```211212Then inspect the resolved state/config paths, process mode, port, local logs,213release tag, model provider, recent config diff, and the smallest failing214integration. Do not use `gateway call` until the method and parameters are known;215some methods mutate configuration, approvals, jobs, Skills, or channels.216217Important drift at the audited pin:218219- Runtime source resolves the default gateway port to **18900**.220- One CLI help string still says **18789**. Treat 18900 as source truth unless221 configuration or environment overrides it.222- Packaged startup can terminate other processes named `openocta` or223 `openocta-launcher`. Use `OPENOCTA_SKIP_SINGLETON_KILL=1` only for a bounded224 debugging case, not as a permanent fix for duplicate instances.225- Release and source version labels can disagree. Capture executable output,226 commit, release tag, and package name separately.227228Production remediation, process termination, service restart, approval action,229file mutation, remote command, rollback, or uninstall requires review and230confirmation before execution. Afterward, verify the target service and user231impact, not only the OpenOcta response.232233### Step 7: Build and contribute against the pinned tree234235At the audited commit, source truth is Go 1.26 even though the README badge says236Go 1.24+. The root Makefile builds the Vite UI with npm, embeds assets, and then237builds the Go binary. Wails and platform packaging add separate toolchains.238239Recommended verification order:240241```bash242cd /path/to/openocta/src && go test ./...243cd /path/to/openocta/ui && npm test244cd /path/to/openocta && make build245```246247Do not run dependency installation, platform signing, notarization, package248publication, or a release job merely to answer a source question. For a code249change, run the narrow package tests first, then the broader suite. Preserve250Apache-2.0 notices and do not copy the bundled third-party Skill archives into a251new distribution without independent license evidence.252253### Step 8: Verify the requested outcome254255Before reporting completion, verify the relevant layer:256257- **release**: exact asset checksum, installed version, source, and rollback;258- **gateway**: expected bind address, port, authentication, and health;259- **model**: provider/model selected and a bounded test succeeds without exposing260 the key;261- **security**: sandbox, network, command policy, approvals, and audit records;262- **integration**: allowlist, least privilege, one harmless end-to-end event, and263 disable path;264- **operations task**: source evidence, approved action, target-side result, and265 no unexpected blast radius;266- **build**: pinned commit, tool versions, tests, artifact path, and whether the267 artifact was merely built or actually installed.268269## Examples270271### Example 1: Fit check272273Request: "Would OpenOcta help our Prometheus and Kubernetes on-call flow?"274275Use `orient`. Map the required data sources, read-only queries, desired outputs,276and existing incident ownership. Compare that contract with OpenOcta's Skills,277MCP, gateway, and approval model. Do not install it as the first step.278279### Example 2: Safe desktop install280281Request: "Install OpenOcta on this Apple Silicon Mac."282283Use `release`. Read current GitHub release metadata, select the darwin arm64 DMG,284review the checksums file and publisher boundary, state what the installer will285change, obtain confirmation, then install and verify the executable version and286local gateway health.287288### Example 3: Service hardening289290Request: "Expose OpenOcta on a Linux ops host."291292Use `harden` before `release`. Require a gateway token, dedicated service user,293restricted bind/firewall, explicit state directory, sandbox/network allowlists,294command policy, approval queue, logs, backup, and rollback. Do not expose the295systemd service with the sample root-owned state directory as an unexplained296default.297298### Example 4: Channel setup299300Request: "Connect our Feishu bot so alerts can wake OpenOcta."301302Use `integrate`. Separate receiving, replying, and executing tasks. Review bot303scope and the OpenOcta sender allowlist, configure credentials privately, test a304read-only non-production event, obtain confirmation before go-live, and verify305both Feishu and OpenOcta state.306307### Example 5: Route generic work outward308309Request: "Design SLO dashboards and alert thresholds for our API."310311Route to `monitoring-observability`. OpenOcta is one possible execution surface,312not the owner of the observability design.313314## Best practices3153161. Pin releases and source commits; do not trust stale version prose.3172. Plan read-only before installing, connecting, sending, or executing.3183. Keep desktop and service trust boundaries separate.3194. Never print secret values; report presence and posture only.3205. Use allowlists and short approvals, not broad persistent bypasses.3216. Treat Skills, MCP servers, channels, webhooks, and schedules as code and322 authority, not cosmetic extensions.3237. Preserve evidence from the monitored system, not only the agent narrative.3248. Verify target-side results and rollback after every consequential action.3259. Disable unapproved CozeLoop export and local CLI delegation explicitly; do326 not rely on omission as a safe default.32710. Keep OpenOcta-specific operation here and generic ops design in its canonical328 skill.32911. Re-audit current main before claiming behavior newer than v1.0.8.330331## References332333- [Source audit and version drift](references/source-audit-and-version-drift.md)334- [Install, configuration, and upgrade](references/install-configuration-and-upgrade.md)335- [Security and live operations](references/security-and-live-operations.md)336- [Skills, MCP, channels, and builds](references/skills-mcp-channels-and-builds.md)337- [Pinned upstream repository](https://github.com/openocta/openocta/tree/6b130c72cdc40d8b3bed304d3e6a64345e3d2622)338- [Pinned v1.0.8 release](https://github.com/openocta/openocta/releases/tag/v1.0.8)