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.
--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.