cli

module
v0.0.0-...-a6a35be Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 15, 2026 License: AGPL-3.0

README

Olares CLI

Go Version

olares-cli is the official CLI for installing and operating Olares — an AI-native, self-hosted personal cloud. One static Go binary drives the whole product: OS bootstrap, Olares ID, Files, Market, Dashboard, Settings, ControlHub, Router. It also carries the olares-* agent skills that document it, compiled in, so the instructions an agent reads and the verbs it can call always come from the same release.

Install it, anywhere that is not already an Olares host:

npx @olares/cli@latest install

Then read the part of this page you need:

For users install, log in, work out which copy you have, upgrade it
For AI agents get the skills onto this machine and keep them current
For developers build the CLI, install your build, edit skills live
Three-layer command system how the verbs are grouped, and which ones your copy has
Output formats --output json, and where it is stable
Troubleshooting the failures people actually hit
Repository layout what is where, and the install engine's lifecycle
Security & risks credentials, download integrity, the --yes contract

For users

Install

On a Linux host running Olares OS you already have it, at /usr/local/bin/olares-cli, and it stays in step with the OS. Go straight to logging in. If that bundle is older than the identity verbs you need, see On a Linux Olares host.

Anywhere else — macOS, Windows, a Linux dev box, CI — one command, Node 18+:

npx @olares/cli@latest install

install is handled by the Node shim rather than the Go binary. It does two things: npm install -g the same version as the wizard you just invoked, then olares-cli skills install. So the tag you name decides the whole setup — @latest leaves you with a latest CLI and latest skills, @next with both from next.

For a single command, installing nothing:

npx @olares/cli@latest files ls /drive/Home

Each invocation pays roughly a second or two of npx cold start and leaves nothing on PATH. Your login survives anyway, because it lives in the OS keychain rather than in the package.

This wizard does not install Olares OS. Bootstrapping a Linux host is curl -fsSL https://olares.sh | bash — see the Linux installation guide. There is also no config init step: Olares authenticates with your Olares ID directly.

On a Linux Olares host

This applies only to Linux hosts with Olares OS installed, where /usr/local/bin/olares-cli already exists. macOS, Windows and non-Olares Linux boxes never hit it.

The OS bundle is pinned to whatever shipped with your Olares OS release, and identity verbs land in npm releases first, so a host bundle can be missing verbs you want. The bundle is canonical for the system layer and olares-cli upgrade is what replaces it — so install the npm copy beside it rather than over it. A plain npm install -g @olares/cli aborts with EEXIST for exactly that reason, and your existing binary is never overwritten.

# Option 1 — a separate prefix, PATH order decides which copy wins.
npm install -g @olares/cli@latest --prefix ~/.olares-cli-npm
export PATH="$HOME/.olares-cli-npm/bin:$PATH"
olares-cli --version
olares-cli skills install
# Revert by reordering PATH, or `rm -rf ~/.olares-cli-npm/`.

# Option 2 — npx, no persistent install and no PATH changes.
npx @olares/cli@latest profile whoami

Never pass --force to npm install -g here: it would clobber the OS-managed binary.

The setup wizard automates that safety net. It reads --version on the existing binary and keeps anything release-grade (1.12.7, -rc1, -beta.1), printing the Option 1 block above instead of attempting an install that would fail. A build that is not release-grade — 0.0.0-development, git describe output, a CI version — it removes, so npm can install over the same path; that is the case where a make install build parked at /usr/local/bin is replaced rather than preserved.

For EACCES on distro-packaged Node, see Troubleshooting.

Log in

Interactive — it prompts for your password in the terminal, and for a TOTP code when two-factor is on — which is why the wizard leaves it to you:

olares-cli profile login --olares-id <your-olares-id>
olares-cli profile whoami
Which copy do I have?

There are four, and they differ in who upgrades them and which verbs they expose. olares-cli version tells you which one you have, and names what upgrades it:

olares-cli version
olares-cli version -o json

Use it rather than --version alone, which reports the Olares OS line. On the npm channel that number is the same across every release inside it — 1.12.7-cli.0 through 1.12.7-cli.8 all say 1.12.7 — so it cannot tell you which published version you have. version reports both.

Copy Path Upgraded by Verbs
OS bundle — a Linux host running Olares OS /usr/local/bin/olares-cli olares-cli upgrade, and Olares OS releases all of them, including the system layer
npm global <npm prefix>/bin/olares-cli olares-cli update everything except the system layer
npx, for the length of one command ~/.npm/_npx/<hash>/…/vendor/olares-cli, temporary nothing — each run resolves the tag you name same as npm global
your own build wherever make install put it you all of them

The npm channel hides the whole system layer — everything that manages an Olares host, from upgrade and start through node, gpu and disk — because those verbs need a host filesystem laid down by the OS installer. The Node shim sets OLARES_CLI_REMOTE_ONLY=1 and the Go binary then never registers them (cmd/ctl/root.go), so they do not appear in --help and return unknown command. install is the one exception: the shim keeps that name for the setup wizard, so it never reaches the Go binary on that channel.

Upgrade

update is the CLI. upgrade is Olares OS — one letter apart, and on a host the wrong one starts a cluster upgrade.

olares-cli update --check     # what would change, and nothing else
olares-cli update             # install it, and the skills with it
olares-cli update --channel next

It updates the binary and then runs skills install from the binary it just installed, which is the step people forget and the reason the skills used to end up a release behind. Only an npm-installed copy can be moved in place; on an OS bundle, a local build or an npx run, update prints what does move that copy instead of doing something to it.

Two npm tags, and the difference matters:

Tag What it points at
@latest the promoted stable release. Promotion is a manual step, so this can sit several releases behind
@next every release, as CI publishes it

update prints both every time, and says so when latest is behind — check for yourself with npm view @olares/cli dist-tags. By hand, if you prefer:

npx @olares/cli@latest install     # re-run the wizard: CLI and skills together
npm install -g @olares/cli@next    # or move just the CLI, to a tag you pick
olares-cli skills install          # then bring the skills along

That last line is what update does for you. Skip it and the CLI reminds you: while the skills on disk name a different release than the binary, every command other than skills, update and version prints one line about it on stderr. On an Olares host the OS bundle upgrades through olares-cli upgrade instead, which does not touch the skills — run skills install after it too.

Uninstall
npm uninstall -g @olares/cli      # npm removes the symlink and the package files itself
rm -rf ~/.npm/_npx/               # optional: the npx cache, which auto-evicts anyway
rm -rf ~/.agents/skills/olares-*  # the skills store
rm -f ~/.claude/skills/olares-*   # and each agent's links into it
olares-cli profile remove <name>  # one profile and its stored credentials

Credentials live in the OS-native keychain (macOS Keychain, Windows DPAPI, Linux secret-service, or ~/.olares/credentials/ as a fallback). profile remove is the only supported way to clear them; don't hand-edit those files.

For AI agents

The suite is compiled into the binary (skills/embed.go), which is the point: reading a skill cannot fetch a version that disagrees with the verbs available here. Every verb below touches local files only — no profile, no network, no cluster — so all of them work on the npm and npx channels too.

Read them without writing anything
olares-cli skills list                            # names, versions, one-line summaries
olares-cli skills list -o json
olares-cli skills read olares-shared              # a SKILL.md, byte for byte, on stdout
olares-cli skills list olares-router/references   # what a skill links to
olares-cli skills read olares-router references/olares-router-calling.md

Load olares-shared first: it routes a request to the right skill and describes the auth model the others assume.

Put them where this machine's agents look
olares-cli skills install

One copy goes to ~/.agents/skills, and every agent skills directory that already exists here is linked to it — Cursor, Claude Code, Codex, OpenClaw, and the rest. A directory is never created for an agent that is not installed, so nothing is left behind for tools you do not use. Where symlinks are unavailable (Windows without developer mode) the files are copied instead, and the report says which happened where.

To write the suite somewhere of your own choosing — a container image, a project directory, a harness that boots from a fixed path:

olares-cli skills export ./skills
Keep them current

Run skills install again after every CLI upgrade — or let olares-cli update do it, which runs that step from the binary it just installed.

Until the copies match, each command prints one line on stderr saying the installed skills came from a different build. OLARES_CLI_NO_SKILL_NOTICE=1 silences it where the extra output cannot be tolerated.

The notice compares content, not the version the skills declare: within one release the label is stable while the skills are not, so a version comparison would be silent in exactly the case that matters. It is a provenance hash rather than a checksum, so editing an installed skill for your own machine is not reported as drift. Details, and what happens when one machine has two binaries sharing one store: docs/design/skills-provenance.md.

If olares-cli is not on the machine at all, install it first (For users) and then run skills install. Skill discovery never installs the CLI for you — metadata.requires.bins is advisory, so an agent can warn instead of guessing.

Where a copy should come from

From the binary. skills install, skills export and skills read all serve the same compiled-in bytes, so none of them can disagree with the verbs you have.

Every other route can, and silently — a skill declares requires.bins: [olares-cli], which any build satisfies, so instructions from a git ref or a registry read as valid against a binary six months older. That rules out npx skills add beclab/Olares (whose copy declares the placeholder 0.0.0-cli.0 forever) and a Claude Code plugin marketplace entry (deliberately absent, for the same reason). The full comparison is in docs/design/skills-provenance.md.

Logging in is the human's job: olares-cli profile login --olares-id <id> prompts for a password at the terminal. Verify with olares-cli profile whoami, then olares-cli dashboard overview.

The suite
Skill Surface Use when the user mentions...
olares-shared Suite routing, platform model, profile auth and login recovery profile, login, logout, 2FA / TOTP, keychain, auth errors, which skill owns a task
olares-files olares-cli files — read/write files in the Olares Files SPA files, drive, home, upload, download, share, SMB / NFS, archives, Seafile sync
olares-market olares-cli market — install / upgrade / list apps market, apps, install app, upgrade app, clone app, charts
olares-settings olares-cli settings — read & mutate the Olares Settings SPA settings, account, users, VPN, network, backup, GPU, integrations
olares-dashboard olares-cli dashboard — Overview / Apps / GPU views dashboard, overview, resource usage, rankings, fan
olares-cluster olares-cli cluster — Olares ControlHub Kubernetes view ControlHub, cluster, pods, workloads, namespaces, nodes, logs, exec
olares-doctor Runtime diagnosis across the trees above won't install, won't start, crash loop, image pull, running but unreachable, slow
olares-router olares-cli router — Router and the model applications behind it models, Router, AI gateway, API key for a model, model quota, chat / embed / transcribe / OCR
olares-knowledge olares-cli knowledge — download orchestration and Wise tasks download a URL, yt-dlp, aria2, torrent, Hugging Face, Wise
olares-search olares-cli search — Desktop global search search files, find a document, search installed apps, Sync / Google Drive / Dropbox
olares-chart olares-cli chart — author, validate and deploy an app chart port an app, docker-compose, Helm chart, OlaresManifest, storage / entrance / GPU wiring
olares-publish Public Olares Market submission publish an app, Market listing, icon and screenshots, release targets

Each is one SKILL.md plus a references/ folder, loaded on demand.

For developers

Build

Go 1.25+ (go.mod). Clone the whole monorepo: go.mod carries relative replace directives into ../framework/oac and ../framework/app-gateway, so a cli/-only checkout cannot resolve its own dependencies.

cd cli
make build                      # ./olares-cli, version stamped from `git describe`
go build -o olares-cli ./cmd    # or plain go, leaving the version at its source default
./olares-cli --help

Either way cli/skills/ is compiled in, so a skill you just edited is part of the build you just made.

Install your build
sudo make install                    # /usr/local/bin/olares-cli
make install PREFIX="$HOME/.local"   # or a prefix you own, no sudo needed
olares-cli skills install            # write out the skills this build carries
make uninstall                       # remove the binary again

Never sudo that third line. It leaves root-owned ~/.agents/skills/olares-* directories that break the next install with EACCES. Only an install into a system prefix needs root.

Updating afterwards is the same three steps: git pull && sudo make install && olares-cli skills install.

On Windows, make install needs Git Bash / MSYS; skills install runs natively and falls back to copying where linking needs privileges.

Edit skills without rebuilding

Point the agents at your checkout, so a saved SKILL.md is what they read on the next turn:

ln -s "$(pwd)/skills/olares-shared" ~/.agents/skills/olares-shared   # repeat per skill

skills install never writes over links like these, because repointing them at the installed copies would end the live-editing loop without saying so. Where it stops depends on where the link is: one in ~/.agents/skills, as above, is the copy every agent reads, so the whole install refuses and names it; one in a single agent's directory only skips that agent, and the rest of the machine still gets the update. Remove the link, or pass --force, when you want the installed copies back.

Test
go test ./skills/... ./cmd/ctl/skills/...   # embedding, export, install, the staleness notice
go test ./cmd/ctl -run TestEveryCommandTheSkillsDocumentResolves
python3 -m pip install -r skills/requirements.txt
python3 -m unittest skills/test_validate.py # the validator and the release stamp
python3 skills/validate.py                  # frontmatter, and one version across the suite

That is what skills-ci.yml runs on a pull request.

What --version reports
Build Version
make build / make install git describe --tags --always --dirty, e.g. 1.12.7-20260821-9-gea3fb979f
plain go build 0.0.0-development, the default in version/version.go
a release the release version, stamped through ldflags in CI

The setup wizard parses this output, which is why its three lines are frozen: olares-cli version -o json is where new fields go instead. That parsing is also what decides whether a make install build at /usr/local/bin is kept or replaced (On a Linux Olares host).

A local build is recognised by its version rather than its path, because make install writes where the OS bundle lives and update must not offer to npm-install over somebody's own build.

The skills have a version of their own, and it is not this one. In git it is the placeholder 0.0.0-cli.0; the release job runs skills/stamp.py over the frontmatter before compiling, so a released binary's skills name the release that built them — 1.12.7-cli.4 on the npm channel, 1.12.7-cli.0 for an OS-line build — and CI fails the release if the stamp did not reach the binary. A local build therefore reports 0.0.0-cli.0 for its skills, which is why the staleness notice stays quiet on a development build: it has nothing to compare that would mean anything.

Three-layer command system

olares-cli <area> [<noun>] <verb> [flags]
  • System layer (root-level, no <area> prefix): install, uninstall, upgrade, start, stop, status, backups, precheck, prepare, download, change-ip, release, info, logs, node, gpu, amdgpu, disk, osinfo, wizard, user. These manage the host running Olares OS and need root / kubeconfig access; no Olares ID is involved. Registered only when OLARES_CLI_REMOTE_ONLY is unset — in practice, only through an Olares host's /usr/local/bin/olares-cli.
  • Identity layer (<area> = profile, files, market, settings, dashboard, cluster, doctor, router, search, knowledge): acts as the currently selected Olares ID against a running Olares HTTP API. Choose the identity once with olares-cli profile use <name>; every verb in this layer then uses it. Available on every channel.
  • Local layer (<area> = skills, chart, preinstall, version, update): this machine's files only — no Olares instance and no identity. skills reads the suite compiled into the binary and writes it out; chart authors and validates an app chart before anything is deployed; version reports which copy this is; update replaces it. The last two are the only ones here that reach the network, and only to the npm registry.

--help is the source of truth for flags and wire shapes:

olares-cli --help
olares-cli files --help
olares-cli files ls --help

Output formats

Most identity-layer verbs accept --output table (default, human-readable) and --output json. Use JSON whenever a script or an agent has to parse the result; the schema is intentionally stable across minor versions.

olares-cli files ls /drive/Home --output json
olares-cli market list --output json | jq '.items[] | {name, version, status}'
olares-cli cluster workload images --limit 50 --page 1 -o json

Troubleshooting

Every row here is a message you can paste into a search box, which is how most of them are met.

What you see What it means What to do
EACCES while npm writes to /usr/lib/node_modules distro-packaged Node, root-owned global prefix npm config set prefix ~/.npm-global, then put ~/.npm-global/bin on PATH. Do not sudo npm install -g
EEXIST installing on an Olares host the guard protecting the OS bundle — working as intended install beside it, not over it: On a Linux Olares host. Never --force
[SECURITY] checksum mismatch during install a download source served bytes that do not match the checksum shipped in the package do not work around it. Report it — see Security & risks
failed to download vendor binary cdn.olares.com unreachable set OLARES_CLI_DOWNLOAD_MIRROR to a reachable mirror; the archive is checksum-verified either way
unknown command for upgrade, node, gpu, disk … you are on the npm or npx channel, which does not register the system layer run those on the Olares host's /usr/local/bin/olares-cli
the agent skills in … were written by a different olares-cli the skills on disk did not come from this binary olares-cli skills install. OLARES_CLI_NO_SKILL_NOTICE=1 silences it
olares-cli update says you are already current, but a newer release exists latest is promoted by hand and can sit months behind olares-cli update --channel next. update prints both tags every time
stdin is not a terminal — pass --yes to confirm a prompting verb in a script or CI pass --yes; see the --yes contract
olares-cli upgrade started upgrading Olares itself upgrade is the OS; update is the CLI olares-cli update is what you wanted

Repository layout

cli/
├── cmd/                  # CLI entrypoint and Cobra command tree
│   ├── main.go
│   └── ctl/              # one folder per top-level command (os, node, gpu, profile,
│                         #   market, files, dashboard, settings, cluster, skills, ...)
├── pkg/                  # install engine + remote API clients
│   ├── core/             # pipeline / module / task / action framework
│   ├── pipelines/        # top-level pipelines invoked by install/start/upgrade/...
│   └── ...               # one package per concern (k3s, etcd, gpu, storage, terminus, ...)
├── internal/             # non-exported helpers (keychain, lockfile, files client, ...)
├── apis/                 # kubekey v1alpha2 CRD types
├── skills/               # agent SKILL.md bundles, compiled into the binary by embed.go
├── npm/                  # @olares/cli wrapper (postinstall fetches the Go binary)
├── version/              # VERSION / VENDOR ldflag targets
├── .goreleaser.yaml
└── go.mod

The npm wrapper's postinstall downloads a prebuilt binary from https://cdn.olares.com, which is where the release workflow publishes these archives and the only place they exist — a GitHub Releases URL was tried first for a long time and 404d every time, because no X.Y.Z-cli.N release is ever created. OLARES_CLI_DOWNLOAD_MIRROR replaces that host (safe, since the archive is checksum-verified either way), and OLARES_CLI_SKIP_DOWNLOAD=1 installs the shim alone. A local Go toolchain is needed only to modify the CLI itself.

The install engine in pkg/core runs a Pipeline → Module → Task → Action stack, moving a host through five lifecycle stages:

  • prechecked — olares-cli precheck validates the environment; the gate before any state-changing action.
  • downloaded — olares-cli download (component / wizard) fetches install assets; download check verifies completeness.
  • prepared — olares-cli prepare lays out dependencies.
  • installed — olares-cli install brings up Kubernetes and Olares core; upgrade moves an installed host forward; start / stop / status toggle the runtime; uninstall rolls back, optionally to a phase; change-ip repairs after an address change.
  • activated — olares-cli wizard activate <olaresId> enrols the first user against BFL/Auth, after which the identity layer becomes usable.

Security & risks

  • Credentials — refresh tokens live in the OS-native keychain; access tokens are derived on demand and never persisted. olares-cli profile remove is the canonical way to wipe them.
  • Profile isolation — there is no per-invocation --profile flag. Identity is single-source via olares-cli profile use <name>, so agents and scripts commit to one identity up front instead of hopping mid-pipeline.
  • --yes contract — every mutating verb on the identity layer prompts by default. --yes is the agreed bypass; treat it as a safety check, not a style preference.
  • Skills are advisory about their host — a skill declares ["olares-cli"] under metadata.requires.bins so an agent can warn when the binary is missing. Discovery never installs it.
  • Download integrity — the npm postinstall verifies the archive it downloads against a checksums.txt packed into the published package, and refuses to extract anything that does not match. npm's own integrity check covers the package; the package covers the binary. Nothing about the transport is trusted, including OLARES_CLI_DOWNLOAD_MIRROR, so pointing that at a local mirror is safe — a mirror cannot substitute the binary, only fail the check. A package assembled without checksums.txt fails closed rather than installing unverified.
  • Code signing — on macOS and Windows the downloaded binary is currently unsigned, so Gatekeeper or SmartScreen may warn on first run.

License

AGPL-3.0-or-later.

Directories

Path Synopsis
apis
kubekey/v1alpha2
Package v1alpha2 contains API Schema definitions for the kubekey v1alpha2 API group +kubebuilder:object:generate=true +groupName=kubekey.kubesphere.io
Package v1alpha2 contains API Schema definitions for the kubekey v1alpha2 API group +kubebuilder:object:generate=true +groupName=kubekey.kubesphere.io
cmd
ctl
ctl/cluster
Package cluster implements the `olares-cli cluster` umbrella command tree.
Package cluster implements the `olares-cli cluster` umbrella command tree.
ctl/cluster/application
Package application implements `olares-cli cluster application ...`.
Package application implements `olares-cli cluster application ...`.
ctl/cluster/container
Package container implements `olares-cli cluster container ...` — per-container drill-down inside a Pod.
Package container implements `olares-cli cluster container ...` — per-container drill-down inside a Pod.
ctl/cluster/cronjob
Package cronjob implements `olares-cli cluster cronjob ...` — CronJob inspection plus suspend/resume mutations.
Package cronjob implements `olares-cli cluster cronjob ...` — CronJob inspection plus suspend/resume mutations.
ctl/cluster/internal/clusteropts
Package clusteropts hosts the shared option bag used by every `cluster ...` verb (top-level + subpackages).
Package clusteropts hosts the shared option bag used by every `cluster ...` verb (top-level + subpackages).
ctl/cluster/internal/picker
Package picker is a tiny, dependency-free interactive list picker built on golang.org/x/term (already used by `cluster exec` for raw mode) and github.com/mattn/go-runewidth (already in the module graph via tabwriter).
Package picker is a tiny, dependency-free interactive list picker built on golang.org/x/term (already used by `cluster exec` for raw mode) and github.com/mattn/go-runewidth (already in the module graph via tabwriter).
ctl/cluster/job
Package job implements `olares-cli cluster job ...` — read- and write-side Job inspection (and the KubeSphere-flavored "rerun" action) for the active user's profile.
Package job implements `olares-cli cluster job ...` — read- and write-side Job inspection (and the KubeSphere-flavored "rerun" action) for the active user's profile.
ctl/cluster/middleware
Package middleware implements `olares-cli cluster middleware ...`.
Package middleware implements `olares-cli cluster middleware ...`.
ctl/cluster/namespace
Package namespace implements `olares-cli cluster namespace ...` — raw K8s Namespace inspection visible to the active profile.
Package namespace implements `olares-cli cluster namespace ...` — raw K8s Namespace inspection visible to the active profile.
ctl/cluster/node
Package node implements `olares-cli cluster node ...` — cluster node inspection visible to the active profile.
Package node implements `olares-cli cluster node ...` — cluster node inspection visible to the active profile.
ctl/cluster/pod
Package pod implements `olares-cli cluster pod ...` — read-side pod inspection for the active user's profile.
Package pod implements `olares-cli cluster pod ...` — read-side pod inspection for the active user's profile.
ctl/cluster/workload
Package workload implements `olares-cli cluster workload ...` — read-side workload (Deployment / StatefulSet / DaemonSet) inspection for the active user's profile.
Package workload implements `olares-cli cluster workload ...` — read-side workload (Deployment / StatefulSet / DaemonSet) inspection for the active user's profile.
ctl/dashboard
Package dashboard implements the `olares-cli dashboard` subtree — the AI-agent-oriented mirror of the dashboard SPA's overview / applications pages.
Package dashboard implements the `olares-cli dashboard` subtree — the AI-agent-oriented mirror of the dashboard SPA's overview / applications pages.
ctl/dashboard/applications
Package applications hosts the cobra wiring for `olares-cli dashboard applications`; business logic lives in cli/pkg/dashboard/applications/.
Package applications hosts the cobra wiring for `olares-cli dashboard applications`; business logic lives in cli/pkg/dashboard/applications/.
ctl/dashboard/overview
Package overview hosts the cobra subtree for `olares-cli dashboard overview`.
Package overview hosts the cobra subtree for `olares-cli dashboard overview`.
ctl/dashboard/overview/disk
Package disk hosts the cobra wiring for `olares-cli dashboard overview disk` (root + main + partitions).
Package disk hosts the cobra wiring for `olares-cli dashboard overview disk` (root + main + partitions).
ctl/dashboard/overview/fan
Package fan hosts the cobra wiring for `olares-cli dashboard overview fan` (root + live + curve).
Package fan hosts the cobra wiring for `olares-cli dashboard overview fan` (root + live + curve).
ctl/dashboard/overview/gpu
Package gpu hosts the cobra wiring for `olares-cli dashboard overview gpu` (root + list + tasks + get + task + detail + task-detail).
Package gpu hosts the cobra wiring for `olares-cli dashboard overview gpu` (root + list + tasks + get + task + detail + task-detail).
ctl/dashboard/schema
Package schema hosts the `olares-cli dashboard schema` introspection command.
Package schema hosts the `olares-cli dashboard schema` introspection command.
ctl/doctor
Package doctor hosts diagnostic checks that combine multiple Olares API surfaces without changing cluster or settings state.
Package doctor hosts diagnostic checks that combine multiple Olares API surfaces without changing cluster or settings state.
ctl/download
Package download hosts `olares-cli knowledge download` — the download-server task centre via Settings edge `https://settings.<terminus>/download/...`.
Package download hosts `olares-cli knowledge download` — the download-server task centre via Settings edge `https://settings.<terminus>/download/...`.
ctl/files
Package files implements the `olares-cli files ...` command tree, which talks to the per-user files-backend (the upstream `files` repo) over its /api/resources REST surface.
Package files implements the `olares-cli files ...` command tree, which talks to the per-user files-backend (the upstream `files` repo) over its /api/resources REST surface.
ctl/market/cancel
Package cancel builds the `market cancel` request for the detected Olares backend version.
Package cancel builds the `market cancel` request for the detected Olares backend version.
ctl/market/restart
Package restart builds the `market restart` request.
Package restart builds the `market restart` request.
ctl/market/resume
Package resume builds the `market resume` request for the detected Olares backend version.
Package resume builds the `market resume` request for the detected Olares backend version.
ctl/market/stop
Package stop builds the `market stop` request for the detected Olares backend version.
Package stop builds the `market stop` request for the detected Olares backend version.
ctl/market/uninstall
Package uninstall builds the `market uninstall` request for the detected Olares backend version.
Package uninstall builds the `market uninstall` request for the detected Olares backend version.
ctl/profile
Package profile implements the `olares-cli profile` command tree.
Package profile implements the `olares-cli profile` command tree.
ctl/router
Package router hosts `olares-cli router` — Router (the Olares AI gateway, whose runtime name is still llm-gateway) together with the per-app Model Console runtime that serves locally installed models.
Package router hosts `olares-cli router` — Router (the Olares AI gateway, whose runtime name is still llm-gateway) together with the per-app Model Console runtime that serves locally installed models.
ctl/search
Package search implements the `olares-cli search` command tree: the CLI counterpart of the Olares Desktop global search dialog.
Package search implements the `olares-cli search` command tree: the CLI counterpart of the Olares Desktop global search dialog.
ctl/settings
Package settings implements the `olares-cli settings` umbrella command tree.
Package settings implements the `olares-cli settings` umbrella command tree.
ctl/settings/advanced
Package advanced hosts `olares-cli settings advanced` (the SPA's Developer/ folder, surfaced as "Advanced" in the docs).
Package advanced hosts `olares-cli settings advanced` (the SPA's Developer/ folder, surfaced as "Advanced" in the docs).
ctl/settings/appearance
Package appearance hosts `olares-cli settings appearance`.
Package appearance hosts `olares-cli settings appearance`.
ctl/settings/apps
Package apps hosts the `olares-cli settings apps ...` subtree.
Package apps hosts the `olares-cli settings apps ...` subtree.
ctl/settings/backup
Package backup hosts `olares-cli settings backup`.
Package backup hosts `olares-cli settings backup`.
ctl/settings/compute
Package compute hosts `olares-cli settings compute` — the new-version "Accelerator" surface (Olares PR #3118, TermiPass compute-resources page).
Package compute hosts `olares-cli settings compute` — the new-version "Accelerator" surface (Olares PR #3118, TermiPass compute-resources page).
ctl/settings/gpu
Package gpu hosts `olares-cli settings gpu`.
Package gpu hosts `olares-cli settings gpu`.
ctl/settings/integration
Package integration hosts `olares-cli settings integration`.
Package integration hosts `olares-cli settings integration`.
ctl/settings/internal/preflight
Package preflight is the soft role-gate adapter shared by every `olares-cli settings` area.
Package preflight is the soft role-gate adapter shared by every `olares-cli settings` area.
ctl/settings/internal/userenv
Package userenv is the client for user-service's env vectors (/api/env/systemenvs, /api/env/userenvs), shared by `settings advanced env` and `settings appearance theme`.
Package userenv is the client for user-service's env vectors (/api/env/systemenvs, /api/env/userenvs), shared by `settings advanced env` and `settings appearance theme`.
ctl/settings/me
Package me hosts the `olares-cli settings me ...` self-service subtree.
Package me hosts the `olares-cli settings me ...` self-service subtree.
ctl/settings/network
Package network hosts `olares-cli settings network`.
Package network hosts `olares-cli settings network`.
ctl/settings/restore
Package restore hosts `olares-cli settings restore`.
Package restore hosts `olares-cli settings restore`.
ctl/settings/search
Package search hosts `olares-cli settings search`.
Package search hosts `olares-cli settings search`.
ctl/settings/users
Package users hosts the `olares-cli settings users ...` subtree.
Package users hosts the `olares-cli settings users ...` subtree.
ctl/settings/video
Package video hosts `olares-cli settings video`.
Package video hosts `olares-cli settings video`.
ctl/settings/vpn
Package vpn hosts `olares-cli settings vpn`.
Package vpn hosts `olares-cli settings vpn`.
ctl/skills
Package skills implements the `olares-cli skills` subtree, which serves the skill suite compiled into this binary.
Package skills implements the `olares-cli skills` subtree, which serves the skill suite compiled into this binary.
ctl/update
Package update implements `olares-cli update`, which upgrades olares-cli itself.
Package update implements `olares-cli update`, which upgrades olares-cli itself.
ctl/version
Package version implements `olares-cli version`, the machine-readable counterpart to the `--version` flag.
Package version implements `olares-cli version`, the machine-readable counterpart to the `--version` flag.
internal
cachedir
Package cachedir resolves the base directory olares-cli keeps its derived state under — the profile index, the encrypted keychain, and the locks that serialize both — inside a container the platform injected a credential into.
Package cachedir resolves the base directory olares-cli keeps its derived state under — the profile index, the encrypted keychain, and the locks that serialize both — inside a container the platform injected a credential into.
files/archive
Package archive implements the wire side of the per-user files-backend's `/api/archive/<node>/` surface, which powers `olares-cli files compress` / `extract` / `archive entries` / `archive cat`.
Package archive implements the wire side of the per-user files-backend's `/api/archive/<node>/` surface, which powers `olares-cli files compress` / `extract` / `archive entries` / `archive cat`.
files/cp
Package cp implements the wire side of `olares-cli files cp` and `olares-cli files mv`.
Package cp implements the wire side of `olares-cli files cp` and `olares-cli files mv`.
files/download
Package download implements the per-file and recursive directory download path for `olares-cli files download` and `files cat`.
Package download implements the per-file and recursive directory download path for `olares-cli files download` and `files cat`.
files/edit
Package edit implements the wire side of `olares-cli files edit`, hitting the per-user files-backend's in-place file-write endpoint:
Package edit implements the wire side of `olares-cli files edit`, hitting the per-user files-backend's in-place file-write endpoint:
files/encodepath
Package encodepath implements percent-encoding for Olares files-backend wire paths so the CLI matches the LarePass web client (apps/packages/app/src/utils/encode.ts: encodeUrl / encodeURIComponent).
Package encodepath implements percent-encoding for Olares files-backend wire paths so the CLI matches the LarePass web client (apps/packages/app/src/utils/encode.ts: encodeUrl / encodeURIComponent).
files/mkdir
Package mkdir implements the wire side of `olares-cli files mkdir`, hitting the per-user files-backend's "create directory" endpoint:
Package mkdir implements the wire side of `olares-cli files mkdir`, hitting the per-user files-backend's "create directory" endpoint:
files/permission
Package permission implements the wire side of `olares-cli files chown`, which talks to the per-user files-backend's `/api/permission/...` surface to read and update the POSIX owner UID of a file or directory.
Package permission implements the wire side of `olares-cli files chown`, which talks to the per-user files-backend's `/api/permission/...` surface to read and update the POSIX owner UID of a file or directory.
files/rename
Package rename implements the wire side of `olares-cli files rename`, hitting the per-user files-backend's in-place rename endpoint:
Package rename implements the wire side of `olares-cli files rename`, hitting the per-user files-backend's in-place rename endpoint:
files/repos
Package repos implements the wire side of `olares-cli files repos`, the listing of Sync (Seafile / Seahub) repositories under the user's account.
Package repos implements the wire side of `olares-cli files repos`, the listing of Sync (Seafile / Seahub) repositories under the user's account.
files/rm
Package rm implements the wire side of `olares-cli files rm`.
Package rm implements the wire side of `olares-cli files rm`.
files/share
Package share implements the wire side of `olares-cli files share`, covering the three folder-sharing surfaces the LarePass web app exposes: Internal (in-Olares cross-user shares), Public (external links with optional password / expiration / upload-only), and SMB (Samba network shares).
Package share implements the wire side of `olares-cli files share`, covering the three folder-sharing surfaces the LarePass web app exposes: Internal (in-Olares cross-user shares), Public (external links with optional password / expiration / upload-only), and SMB (Samba network shares).
files/smbmount
Package smbmount implements the wire side of `olares-cli files smb` AND `olares-cli files nfs` — the CLI counterpart of the LarePass web app's "Connect to Server" flow for mounting an external SMB share or NFS export into the per-user files-backend's `external/<node>/...` namespace.
Package smbmount implements the wire side of `olares-cli files smb` AND `olares-cli files nfs` — the CLI counterpart of the LarePass web app's "Connect to Server" flow for mounting an external SMB share or NFS export into the per-user files-backend's `external/<node>/...` namespace.
files/upload
api.go: thin HTTP client for the per-user files-backend's Drive v2 upload-related endpoints.
api.go: thin HTTP client for the per-user files-backend's Drive v2 upload-related endpoints.
keychain
Package keychain provides cross-platform secure storage for olares-cli secrets (currently used for the per-olaresId access/refresh token grants written by the `profile login` and `profile import` commands).
Package keychain provides cross-platform secure storage for olares-cli secrets (currently used for the per-olaresId access/refresh token grants written by the `profile login` and `profile import` commands).
keychain/keychainfake
Package keychainfake provides a process-local KeychainAccess implementation for tests.
Package keychainfake provides a process-local KeychainAccess implementation for tests.
lockfile
Package lockfile is a tiny wrapper over github.com/gofrs/flock that adds context-cancelable acquisition.
Package lockfile is a tiny wrapper over github.com/gofrs/flock that adds context-cancelable acquisition.
release
Package release answers two questions that every copy of olares-cli needs and none of them could previously answer about itself: which distribution channel put this binary here, and what version that channel calls it.
Package release answers two questions that every copy of olares-cli needs and none of them could previously answer about itself: which distribution channel put this binary here, and what version that channel calls it.
pkg
aptsource
Package aptsource enables Debian archive components without replacing the administrator's source configuration.
Package aptsource enables Debian archive components without replacing the administrator's source configuration.
auth
Package auth provides olares-cli's authentication primitives: JWT expiry extraction, password-based login (/api/firstfactor + /api/secondfactor/totp), refresh-token bootstrap (/api/refresh), and the on-disk token store.
Package auth provides olares-cli's authentication primitives: JWT expiry extraction, password-based login (/api/firstfactor + /api/secondfactor/totp), refresh-token bootstrap (/api/refresh), and the on-disk token store.
bflenvelope
Package bflenvelope decodes the response envelope every `olares-cli settings` route replies with: {code, message, data}.
Package bflenvelope decodes the response envelope every `olares-cli settings` route replies with: {code, message, data}.
chart
Package chart ports devbox's docker-compose -> Olares chart scaffolding into olares-cli.
Package chart ports devbox's docker-compose -> Olares chart scaffolding into olares-cli.
cliconfig
Package cliconfig owns the on-disk profile configuration of olares-cli (~/.olares-cli/config.json).
Package cliconfig owns the on-disk profile configuration of olares-cli (~/.olares-cli/config.json).
clierr
Package clierr holds error sentinels that the process entrypoint must understand.
Package clierr holds error sentinels that the process entrypoint must understand.
cliutil
Package cliutil hosts CLI-tree-agnostic helpers shared across the cmd/ctl/* subtrees (settings, cluster, files, dashboard, market).
Package cliutil hosts CLI-tree-agnostic helpers shared across the cmd/ctl/* subtrees (settings, cluster, files, dashboard, market).
clusterclient
Package clusterclient is the HTTP wrapper olares-cli's `cluster` command tree uses to talk to the per-user ControlHub BFF (`<rp.ControlHubURL>`).
Package clusterclient is the HTTP wrapper olares-cli's `cluster` command tree uses to talk to the per-user ControlHub BFF (`<rp.ControlHubURL>`).
clusterctx
Package clusterctx centralizes the "who am I against this Olares cluster?" round-trip used by `olares-cli cluster context` and by any future verb that wants to render the active profile's identity / role / accessible workspaces from the ControlHub side.
Package clusterctx centralizes the "who am I against this Olares cluster?" round-trip used by `olares-cli cluster context` and by any future verb that wants to render the active profile's identity / role / accessible workspaces from the ControlHub side.
clusterexec
Package clusterexec implements the client side of the Kubernetes remote-command (exec) WebSocket subprotocol "v4.channel.k8s.io" used by `olares-cli cluster {pod,container} exec`.
Package clusterexec implements the client side of the Kubernetes remote-command (exec) WebSocket subprotocol "v4.channel.k8s.io" used by `olares-cli cluster {pod,container} exec`.
cmdutil
Package cmdutil holds the shared "Factory" that command implementations reach into instead of constructing their own clients / loading their own config / etc.
Package cmdutil holds the shared "Factory" that command implementations reach into instead of constructing their own clients / loading their own config / etc.
containerdimages
Package containerdimages is the shared wire model + fetch path for the containerd image list exposed by user-service at /api/containerd/images (a BFL-enveloped array).
Package containerdimages is the shared wire model + fetch path for the containerd image list exposed by user-service at /api/containerd/images (a BFL-enveloped array).
cookieparse
Package cookieparse turns the three cookie exchange formats a user can realistically get hold of (Netscape cookies.txt, JSON exports, raw HTTP headers) into the DomainCookie shape user-service stores in Infisical.
Package cookieparse turns the three cookie exchange formats a user can realistically get hold of (Netscape cookies.txt, JSON exports, raw HTTP headers) into the DomainCookie shape user-service stores in Infisical.
credential
Package credential is the orchestration layer that turns a cliconfig.ProfileConfig + a stored token into a fully-resolved view that command code can consume without touching disk directly.
Package credential is the orchestration layer that turns a cliconfig.ProfileConfig + a stored token into a fully-resolved view that command code can consume without touching disk directly.
daemon/api
Package api is a thin HTTP client for the local olaresd daemon.
Package api is a thin HTTP client for the local olaresd daemon.
daemon/state
Package state defines the data types exposed by the local olaresd daemon's GET /system/status endpoint.
Package state defines the data types exposed by the local olaresd daemon's GET /system/status endpoint.
dashboard
Package dashboard hosts the data + transport layer for the `olares-cli dashboard` CLI subtree.
Package dashboard hosts the data + transport layer for the `olares-cli dashboard` CLI subtree.
dashboard/applications
Package applications hosts the business logic for the `olares-cli dashboard applications` cobra leaf — a workload-grain table mirroring the SPA's Applications page.
Package applications hosts the business logic for the `olares-cli dashboard applications` cobra leaf — a workload-grain table mirroring the SPA's Applications page.
dashboard/format
Package format is a 1:1 Go port of the dashboard SPA's number / unit formatting helpers.
Package format is a 1:1 Go port of the dashboard SPA's number / unit formatting helpers.
dashboard/overview
Package overview hosts the business logic for the `olares-cli dashboard overview` cobra subtree — physical / user / ranking / cpu / memory / pods / network leaves plus the default fan-out aggregator.
Package overview hosts the business logic for the `olares-cli dashboard overview` cobra subtree — physical / user / ranking / cpu / memory / pods / network leaves plus the default fan-out aggregator.
dashboard/overview/disk
Package disk hosts the business logic for the `olares-cli dashboard overview disk` subtree (root + main + partitions).
Package disk hosts the business logic for the `olares-cli dashboard overview disk` subtree (root + main + partitions).
dashboard/overview/fan
Package fan hosts the business logic for the `olares-cli dashboard overview fan` subtree (root + live + curve).
Package fan hosts the business logic for the `olares-cli dashboard overview fan` subtree (root + live + curve).
dashboard/overview/gpu
Package gpu hosts the business logic for the `olares-cli dashboard overview gpu` subtree (root + list + tasks + get + task + detail + task-detail).
Package gpu hosts the business logic for the `olares-cli dashboard overview gpu` subtree (root + list + tasks + get + task + detail + task-detail).
gpu
k3s
olares
Package olares contains primitives shared across olares-cli that don't fit into a more specific subpackage.
Package olares contains primitives shared across olares-cli that don't fit into a more specific subpackage.
systemcomponents
Package systemcomponents describes the Kubernetes workloads that make up an Olares installation and provides the readiness check used to decide whether the system is up.
Package systemcomponents describes the Kubernetes workloads that make up an Olares installation and provides the readiness check used to decide whether the system is up.
web5/crypto
Package crypto provides the following functionality: * Key Generation: secp256k1, ed25519 * Signing: secp256k1, ed25519 * Verification: secp256k1, ed25519 * A KeyManager abstraction that can be leveraged to manage/use keys (create, sign etc) as desired per the given use case
Package crypto provides the following functionality: * Key Generation: secp256k1, ed25519 * Signing: secp256k1, ed25519 * Verification: secp256k1, ed25519 * A KeyManager abstraction that can be leveraged to manage/use keys (create, sign etc) as desired per the given use case
web5/crypto/dsa/eddsa
Package eddsa implements the EdDSA signature schemes as per RFC 8032 https://tools.ietf.org/html/rfc8032.
Package eddsa implements the EdDSA signature schemes as per RFC 8032 https://tools.ietf.org/html/rfc8032.
web5/jwk
Package jwk implements a subset of the JSON Web Key spec (https://tools.ietf.org/html/rfc7517)
Package jwk implements a subset of the JSON Web Key spec (https://tools.ietf.org/html/rfc7517)
whoami
Package whoami centralizes the "who am I on this Olares?" round-trip.
Package whoami centralizes the "who am I on this Olares?" round-trip.
wizard
frp.go: fetch the public Olares-tunnel (FRP) registry by olaresId.
frp.go: fetch the public Olares-tunnel (FRP) registry by olaresId.
Package skills carries the agent skill suite that ships inside the olares-cli binary, so the instructions an agent follows and the command tree it drives are one release rather than two.
Package skills carries the agent skill suite that ships inside the olares-cli binary, so the instructions an agent follows and the command tree it drives are one release rather than two.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL