← Back to docs

Config Hub CLI (linxira-config)

linxira-config is the command-line entry to the Config Hub: SSH, mirrors, diagnostic logs, environment variables, software stacks, workspace guard and security posture — one command per action. Running linxira-config with no arguments opens a pure-bash numbered menu (TUI); every menu item maps 1:1 to a CLI subcommand.

📌 This page matches config-hub 2.5.2. Append --json to any subcommand for machine-readable output (workspace-guard / ssh status / net diag / mirror list all support it) — handy for scripts and AI assistants.

Diagnostic logs: collect & upload in one shot

When an install fails, updates misbehave or anything looks odd, this is always step one — collect local diagnostics and get a shareable short link back:

linxira-config logs collect          # gathered into ~/linxira-logs/linxira-logs-*.txt
linxira-config logs upload           # uploads the newest bundle, prints a link
linxira-config logs upload some-file # upload a specific file

The bundle covers: system & disk overview, installed linxira packages, failed units, the full installer log (/tmp/linxira-installer.log and the Calamares session log), pacman.log and this boot's error log. Uploads fall through paste.rs → termbin → dpaste automatically (reachable both in and outside China) and return a link you can hand to a maintainer or an AI assistant.

SSH remote access

Turn the machine into a remotely manageable server with one command:

linxira-config ssh on                # enable & start sshd (works in passwordless sudo sessions too)
linxira-config ssh status            # service status & connection info (IP / port)
linxira-config ssh off               # disable remote SSH
linxira-config ssh port 2222         # change the port
linxira-config ssh status --json     # machine-readable

Key management (Ed25519):

linxira-config ssh key generate [name]           # generate a key pair
linxira-config ssh key list / show / fingerprint  # inspect
linxira-config ssh authorized add <pubkey>        # authorize a public key
linxira-config ssh authorized list / remove       # manage the allowlist

Step-by-step tutorial (incl. key login) lives in the Remote Access guide. Note: authorized add only accepts plain public keys without options; key paths reject symlinks.

Environment variables

Machine-wide variables live in /etc/profile.d/linxira-env.sh and survive reboots:

linxira-config env list              # list all
linxira-config env set KEY value     # write
linxira-config env get KEY           # read
linxira-config env unset KEY         # remove

Software stacks

One-shot research stacks (bridged to the linxira-component-manager transactional backend):

linxira-config stack list            # available stacks: scientific, office, dev…
linxira-config stack status          # installation state
linxira-config stack install <id>    # install one stack
linxira-config stack tui             # terminal UI

Workspace guard

Takes an independent recovery point of your workspace every 30 minutes (.git included) so accidental deletions roll back:

linxira-config workspace-guard status            # config & timer state (--json works)
sudo linxira-config workspace-guard enable       # pick a disk, create the ext4 store, register & start
sudo linxira-config workspace-guard disable      # stop the timer (keeps every recovery point)
linxira-config workspace-guard handbook          # print the AI-readable handbook manifest

Day-to-day snapshot operations: linxira-components guard <status|list|snapshot|restore>.

Mirror management

Six source families: Arch, npm, PyPI, AUR, Go modules and Flatpak:

linxira-config mirror arch list              # list candidate mirrors
linxira-config mirror arch speed             # measure all
linxira-config mirror arch auto              # pick the fastest
linxira-config mirror pip set tsinghua       # switch by name (npm/pip/aur/go are user-scoped)
linxira-config mirror flatpak set <id|url>   # pin a Flatpak remote
linxira-config mirror arch reset             # back to official
linxira-config mirror arch list --json       # machine-readable

Miniforge channels are managed separately and restricted to the vetted conda-forge and bioconda: conda channels list|add|remove|reset.

Catalog queries (read-only)

Query the vetted software catalog. Commands take catalog IDs (not package names):

linxira-config catalog software --all
linxira-config catalog software --status drifted
linxira-config catalog component list
linxira-config catalog bundle show kde-plasma
linxira-config catalog software show firefox

By default only installed / partial / external / pending / drifted / reboot-required show; --all adds not-installed.

Network & security

linxira-config net diag              # full network diagnostics (--json works)
linxira-config net dns               # current DNS servers
linxira-config net dns set 1.1.1.1   # set DNS
linxira-config security status       # posture overview (UFW/SSH/fail2ban/KVM)
linxira-config security ufw allow 22 # allow a TCP port
linxira-config runtime status        # runtime & package-manager status

Miscellaneous

linxira-config timeshift status      # Timeshift snapshots (enable/disable/status)
linxira-config headless on           # headless: next boot skips the desktop, all RAM for compute
linxira-config info / status         # system info / quick status summary
linxira-config tui                   # numbered menu (same capabilities)

rdp, virt kvm-on/docker-on, security harden and power mutations are intentionally pending the transactional backend (status queries work) — by design: every mutation must go through the rollback-safe transactional channel.

Bugs and feature requests go to the linxira-config-hub repository.