octelium-management
Manage the resources of a running Octelium Cluster with octeliumctl: Services (HTTP, SSH, PostgreSQL, MySQL, Kubernetes, TCP/UDP, DNS, SOCKS5, RDP, MCP, LLM; public/anonymous, secretless upstream credentials, managed containers, dynamic config), Users, Groups, Namespaces, Policies and access control (CEL/OPA conditions, priorities, inline and global Policies), IdentityProviders (GitHub, OIDC, SAML, workload OIDC assertions), Credentials, Sessions, Secrets and ClusterConfig. Use when creating, changing, auditing or deleting Cluster resources, granting or revoking access, writing Policy YAML, or running `octeliumctl apply/get/create/ update/delete`. Not for connecting as a client (octelium-connect), installing a Cluster (octelium-quick-install, octelium-kubernetes-install), or upgrades, TLS certificates and Kubernetes-level operations (octelium-cluster-ops).
- License 许可
- Apache-2.0
- 最近更新
- 2026-10-10
- Stars
- ★ 0
- Forks
- 0
01 前言 Front Matter
- name
- octelium-management
- license
- Apache-2.0
- metadata
- { "author": "Octelium Labs, LLC", "version": "0.1.0", "source-checked": "octelium fe628332 (2026-10-05)", "verified-against": "octelium v0.43.0" }
- description
- Manage the resources of a running Octelium Cluster with octeliumctl: Services (HTTP, SSH, PostgreSQL, MySQL, Kubernetes, TCP/UDP, DNS, SOCKS5, RDP, MCP, LLM; public/anonymous, secretless upstream credentials, managed containers, dynamic config), Users, Groups, Namespaces, Policies and access control (CEL/OPA conditions, priorities, inline and global Policies), IdentityProviders (GitHub, OIDC, SAML, workload OIDC assertions), Credentials, Sessions, Secrets and ClusterConfig. Use when creating, changing, auditing or deleting Cluster resources, granting or revoking access, writing Policy YAML, or running `octeliumctl apply/get/create/ update/delete`. Not for connecting as a client (octelium-connect), installing a Cluster (octelium-quick-install, octelium-kubernetes-install), or upgrades, TLS certificates and Kubernetes-level operations (octelium-cluster-ops).
- compatibility
- Requires octeliumctl logged in to the Cluster with API access. Helper scripts need Python 3.9+ with PyYAML and jsonschema (or uv).
02 资源文件 35
- 资产文件assets/schemas/core.v1.AccessLog.schema.json55.9 KB
- 资产文件assets/schemas/core.v1.Authenticator.schema.json16.9 KB
- 资产文件assets/schemas/core.v1.ClusterConfig.schema.json50.1 KB
- 资产文件assets/schemas/core.v1.ComponentLog.schema.json4.4 KB
- 资产文件assets/schemas/core.v1.Config.schema.json6.9 KB
- 资产文件assets/schemas/core.v1.Credential.schema.json15.8 KB
- 资产文件assets/schemas/core.v1.Device.schema.json25.5 KB
- 资产文件assets/schemas/core.v1.Gateway.schema.json8.2 KB
- 资产文件assets/schemas/core.v1.Group.schema.json13.5 KB
- 资产文件assets/schemas/core.v1.IdentityProvider.schema.json17.6 KB
- 资产文件assets/schemas/core.v1.Namespace.schema.json13.5 KB
- 资产文件assets/schemas/core.v1.Policy.schema.json11.7 KB
- 资产文件assets/schemas/core.v1.PolicyTrigger.schema.json16.9 KB
- 资产文件assets/schemas/core.v1.Region.schema.json7.2 KB
- 资产文件assets/schemas/core.v1.Secret.schema.json7.2 KB
- 资产文件assets/schemas/core.v1.Service.schema.json195.1 KB
- 资产文件assets/schemas/core.v1.Session.schema.json42.5 KB
- 资产文件assets/schemas/core.v1.User.schema.json19.4 KB
- 资产文件assets/templates/first-admin.yaml830 B
- 资产文件assets/templates/group-service-access.yaml411 B
- 资产文件assets/templates/postgres-secretless.yaml626 B
- 资产文件assets/templates/served-by-connector.yaml664 B
- 资产文件assets/templates/workload-github-actions.yaml514 B
- 参考文档references/apply-workflow.md10.5 KB
- 参考文档references/cli-octeliumctl.md27.1 KB
- 参考文档references/identity-and-access.md7.4 KB
- 参考文档references/policies.md11.0 KB
- 参考文档references/resource-model.md5.7 KB
- 参考文档references/secrets-and-cluster-config.md4.5 KB
- 参考文档references/services.md7.9 KB
- 参考文档references/troubleshooting.md3.6 KB
- 脚本scripts/_common.py9.2 KB
- 脚本scripts/export_resources.py4.3 KB
- 脚本scripts/plan_apply.py11.4 KB
- 脚本scripts/validate_resources.py10.3 KB
03 SKILL.md 正文
Octelium: manage Cluster resources
Octelium resources (Core API core/v1) live in the Cluster's own API, not in Kubernetes.
They are managed declaratively with octeliumctl apply (like kubectl apply) plus a few
imperative commands. Every access decision is made by Policies: there is no built-in
superuser, and nothing is reachable unless a Policy allows it.
Scope
- Use for: authoring and applying resource YAML, access control, identity (Users/Groups/IdPs/Credentials/Sessions/Devices), Secrets, ClusterConfig, auditing current state, diagnosing "why is X denied".
- Hand off: client connection and access problems → octelium-connect. Upgrades, TLS
certificates, Cluster health,
kubectl-level work → octelium-cluster-ops. No Cluster yet → an install skill.
Ground rules
Check the installed CLI's capabilities; the bundled CLI reference is v0.43.0. Follow these rules while preserving the user's authorized target and outcome. Prepare the concrete change and preview first; ask only for missing inputs or unresolved destructive scope.
- Look before you change.
octeliumctl get <kind> <name> -o yamlfor every resource you touch, and the Policies involved. Never assume a resource's current content. applyreplaces whole resources. Each document is the complete desired spec; any field you omit is reset. To edit an existing resource, export it, change only what was asked, and apply the full document. ClusterConfig is the same: its entire spec is replaced.- Validate and preview before apply. Check
octeliumctl validate --helpandocteliumctl apply --help. When supported, usevalidate <paths>andapply --dry-run <paths> [same flags as apply]. Validation is local; dry-run reads current state, skips mutations and does not guarantee server acceptance or reserve state. On older CLIs, usescripts/validate_resources.pyandscripts/plan_apply.pywithuv runorpython3. Resolve helper paths against the loaded skill directory, keeping the user's project as the working directory so resource paths still refer to it. The helpers add risk warnings and field-level previews. Apply still drops unknown fields with a warning and can skip rejected resources while applying the rest. Read its output for partial success. --pruneis destructive across kinds. It deletes every non-system resource of each included kind that isn't in the given paths, including kinds with no documents there. A bareocteliumctl apply --prune ./services/would delete all Users, Groups, Policies, IdentityProviders, Namespaces, Credentials and Configs, including the built-inrootUser, theroot-initCredential and theallow-allPolicy. Use--pruneonly when the user asks and the paths are the complete source of truth for the kinds you restrict it to with--include; preview with native dry-run when supported and runplan_apply.py --prunewith the same flags for danger detection. Show the deletions first.- Never widen access to fix a denial. Don't attach
allow-all, addmatchAnyALLOW rules, disable Policies, remove DENY rules, or setisPublic/isAnonymousto make something work, unless the user explicitly asks for that exact change. Diagnose (references/policies.md), then propose the narrowest rule and say who gains what. - Keep secrets out of ordinary files, arguments and output. Don't put secret values in
committed or unprotected YAML,
--valuearguments or chat. Have the user runocteliumctl create secret <name>(interactive prompt) in their terminal, or use--file <path>,--from-env VARor stdin (-f -). Reference Secrets by name (fromSecret: <name>). New Credential tokens are shown once: have the user create them in their terminal, or capture output to an authorized private file without reading its contents into the transcript (references/identity-and-access.md). - Don't lock the admins out. Before deleting or changing
root,root-init,allow-all, admin Users/Groups, IdentityProviders, or Policies on theoctelium-apiNamespace, confirm another admin identity exists and works (e.g.octeliumctl get user <admin>and a test login by that admin). - Deletes and updates have no confirmation prompt.
octeliumctl delete ...,update session --reject,update credential --disableact immediately. State exactly what will happen and proceed if the user already authorized that target and outcome; ask only when the scope or destructive effect remains unresolved. - Don't invent fields, enum values, names or references. Take field names from the JSON
Schema of the kind (references/resource-model.md lists the URLs); take names from
get.
In helper command examples, octelium_skill_dir is the absolute directory containing this
loaded SKILL.md. Resolve it from the agent's skill location; don't change the project's working
directory. For example: uv run "$octelium_skill_dir/scripts/validate_resources.py" desired.yaml.
Workflow
- Context. Domain (
OCTELIUM_DOMAINor--domain), CLI version (octeliumctl version), authentication (octeliumctl shares theocteliumSession; if none exists, the user must log in: see the octelium-connect skill). Reuse authorized access; a diagnostic request doesn't authorize reading tokens or starting browser login. Bound the first harmless API call with the agent's command timeout. Usetimeout 30 octeliumctl get nsonly if GNUtimeoutis available; on other hosts use the agent's equivalent and stop only the process you started. - Find the source of truth. Ask whether the Cluster is managed from a Git directory of YAML. If so, edit those files instead of creating drift, and apply from there.
- Inspect current resources (
get ... -o yaml), including every Policy that affects the request path (Service, Namespace, User, Groups, ClusterConfig global Policies). - Author the smallest change. Start from exported YAML for existing resources; use
assets/templates/and the references for new ones; check fields against the schema. - Validate with native
octeliumctl validatewhen supported, orscripts/validate_resources.pyon older CLIs. Use the helper for additional risk warnings. Fix every error; review every warning. - Preview with native
octeliumctl apply --dry-runwhen supported, orscripts/plan_apply.pyon older CLIs, using the same paths and flags you will apply. Show the user the plan when it updates or deletes anything, touches Policies or identity, or exposes a Service publicly. - Apply exactly what was previewed:
octeliumctl apply <paths> [flags]. Read the output forUnknown field,Could not create,Could not updateandSkippinglines. - Verify with
get, and for access changes, a real request by the intended User (or ask the user to test). - Report what changed, what access it grants or removes, and how to revert.
Command map
| Task | Command |
|---|---|
| Apply desired state | octeliumctl apply <file-or-dir>... [--include K] [--exclude K] [--include-secret] [--prune]; - reads stdin |
| Validate / preview (when supported) | octeliumctl validate <paths>; octeliumctl apply --dry-run <paths> [apply flags] |
| Read | octeliumctl get <kind> [name] [-o yaml|json]; list flags --page, --items-per-page, --order-by-name, --order-reverse; filters get svc --namespace, get cred|sess|dev|authn --user |
Kinds for get |
service svc, namespace ns, user usr, group grp, policy pol, identityprovider idp, credential cred, session sess, device dev, authenticator authn, secret sec, config cfg, clusterconfig cc, gateway gw, region rgn |
| Create imperatively | create secret, create config, create credential, create namespace (everything else via apply) |
| Update imperatively | update session --approve|--reject|--expire-in, update credential --enable|--disable|--expire-in|--max-authn|--policy, update device|authenticator --approve|--reject, update secret|config |
| Delete | octeliumctl delete <kind> <name> (aliases del, rm); Services as name or name.namespace |
apply manages Config, Policy, IdentityProvider, Namespace, Group, User, Service, Credential
(Secret only with --include-secret) and ClusterConfig. Sessions, Devices, Authenticators,
Gateways and Regions are not applied.
References
Read only what the task needs:
| Need | File |
|---|---|
| Apply semantics, repo layout, export-edit-apply, prune safety, the helper scripts | references/apply-workflow.md |
Kinds, naming (svc.ns), built-in resources, JSON Schema URLs |
references/resource-model.md |
Policy evaluation, conditions, ctx fields, priorities, recipes, diagnosing denials |
references/policies.md |
| Service modes, upstreams, secretless auth, public/anonymous, TLS, containers, dynamic config | references/services.md |
| Users, Groups, IdentityProviders, Credentials, Sessions, Devices, first-admin bootstrap | references/identity-and-access.md |
| Secrets, Configs and ClusterConfig | references/secrets-and-cluster-config.md |
| Access logs, observability, common errors | references/troubleshooting.md |
Exact octeliumctl flags (snapshot) |
references/cli-octeliumctl.md |
| Starting-point YAML (validated) | assets/templates/*.yaml |
Sources of truth
- Resource structure: the JSON Schema for the kind,
https://octelium.com/schemas/octelium/latest/core.v1.<Kind>.schema.json(bundled snapshot inassets/schemas/). Schema beats prose examples for field names, types and enums. - CLI syntax:
octeliumctl <command> --helpon the installed version beats the bundled snapshot. - Semantics and newer features: https://octelium.com/docs/octelium/latest/llms.txt and the
page's Markdown twin (
<page-url>.md). Check them when a feature isn't covered here or may have changed.
04 同仓库更多 Skills
octelium-quick-install
Install, resume, repair or remove a single-node Octelium Cluster on one Linux VM/VPS with the official quick installer (https://octelium.com/install-cluster.sh), which provisions K3s, Multus, PostgreSQL and Valkey and bootstraps Octelium. Covers host and domain prerequisites, NAT/cloud firewalls (`--nat`, `--public-ip`, ports), installer options, resuming a failed run, post-install public DNS and TLS certificate (certbot + `octops cert`), the first login with the initial token, and the safe use of `--uninstall`, `--purge-data`, `--reset-db` and `--force`. Use for "install Octelium on a server/VPS/homelab/single node" or installer errors. Not for existing or multi-node Kubernetes (octelium-kubernetes-install), upgrades and certificate rotation of a running Cluster (octelium-cluster-ops), or managing resources (octelium-management).
octelium-kubernetes-install
Plan and perform a production Octelium Cluster installation on an existing Kubernetes cluster (EKS, GKE, AKS, DigitalOcean, Linode, on-prem, k3s/RKE2/Talos, multi-node) with `octops init` and a Bootstrap file. Covers Octelium data-plane/control-plane node labels, primary CNI plus Multus (Cilium non-exclusive), CNI conf dir, Gateway public IPs and the `octelium.com/override-gw-ip` annotation, the LoadBalancer Ingress, front proxy mode, SPIFFE, external PostgreSQL and Redis/Valkey with passwordFromSecret, network ranges, QUIC, and post-install DNS, TLS (cert-manager or `octops cert`) and first login. Use for "install Octelium on Kubernetes/production/multi-node" or `octops init` problems. Not for a single fresh VM (octelium-quick-install), upgrades or Day-2 operations (octelium-cluster-ops), or managing resources (octelium-management).
octelium-connect
Use the octelium client to reach an existing Octelium Cluster as a User. Covers installing the CLIs, logging in (browser/IdP, authentication token, OIDC assertion, access token), `octelium connect` (detached, rootless, `-p` publishing Services to localhost, `--serve` to host Services, embedded SSH/SOCKS5, QUIC), reaching Services by name or FQDN (HTTP, SSH, PostgreSQL, MySQL, Kubernetes via `octelium config`), `octelium ssh`/`cp`, running the client in Docker, Kubernetes or CI, and fixing login, tunnel and DNS failures. Use when someone wants to access, connect to or serve through Octelium. Not for creating Services, Users or Policies (octelium-management) or for installing/operating a Cluster (octelium-quick-install, octelium-kubernetes-install, octelium-cluster-ops).
octelium-cluster-ops
Operate an installed Octelium Cluster at the Kubernetes/infrastructure level with octops and kubectl: check for and perform upgrades (`octops upgrade`), set or rotate the Cluster and Namespace TLS certificates (`octops cert`, cert-manager, the `cert-cluster` Secret), install or upgrade packages (Cordium, Enterprise), check Cluster health and component logs, add or change data-plane nodes and Gateway public IPs, recover the initial admin token, and uninstall (`octops uninstall`). Use for Day-2 operations and outages where the Cluster itself (not a Policy) is suspect. Not for first-time installation (octelium-quick-install, octelium-kubernetes-install), managing Users/Services/Policies (octelium-management), or client-side connection problems (octelium-connect).
cordium
Install, configure and use Cordium, the identity-based sandbox platform built on Octelium and Kubernetes. Use for Cordium Workspaces, the cordium CLI, Go/Python/Rust/TypeScript SDKs, the web portal and Cordium Agent, Workspace/Template YAML, Spaces and Memberships, pre-builds, Secrets and GitProviders, UserConfig and UserSecrets, Volumes and WorkspaceSnapshots, secretless access, egress rules and the Cordium ClusterConfig. Routes to configuration references and worked examples for development, AI agents and CI/CD. Not for Octelium Services and Policies in general (octelium-management), client tunnels (octelium-connect), or installing and operating the Octelium Cluster (octelium-quick-install, octelium-kubernetes-install, octelium-cluster-ops).