Local files and environment

~/.kubefit

Everything the CLI keeps on your machine lives in one directory.

PathContents
config.jsonServer origin, your CLI token, and the saved track with whether it is pinned. Treat it like a password file
packs/<track>.jsonCached packs, one per track
packs/<track>.json.sigThe Ed25519 signature each pack was verified against
exams/<track>.jsonThe signed 17-question mock exam form for a track, fetched by kubefit packs
reps.jsonlEvery rep recorded on this machine, one JSON object per line
notes.jsonlNotes written in the terminal
remote-reps.jsonl, remote-notes.jsonlCopies pulled from your account by kubefit sync, such as notes written in the app
mock-sessions/, remote-mock-sessions.jsonMock exam session records made here, and the copies pulled from your account
exam-sessions/<track>-*/One directory per mock exam attempt: its pack snapshot, work files, private kubeconfig and report.json. kubefit end removes these workspaces; durable results remain in mock-sessions/
synced, synced-notes, synced-mocksSync bookkeeping: which local reps, notes and mock sessions have already uploaded
active-session.json, active-exam.json, session.lockPresent only while a drill or a mock exam is running
work/Seeded exercise files for the current drill
bin/Helper shims the graders expect on macOS

Some paths appear only after the command that needs them has run.

What kubefit end removes

kubefit end deletes the muscle and muscle-ckne clusters, every kubefit-exam-<track> mock exam cluster, the kubefit-lfcs and kubefit-exam-lfcs VMs with their disks, the kubefit-upgrade cluster, the owned kubefit-etcd-recovery container and volume, and the temporary files under work/ and exam-sessions/. It keeps your token, packs, exam forms, reps, notes and mock exam reports.

It refuses to run inside a drill shell, while a drill is paused or active, and during a mock exam. Finish, kubefit escape or kubefit submit first.

To remove everything, run kubefit end and then delete ~/.kubefit. Reps and notes that already synced stay on your account.

Outside ~/.kubefit

WhatWhereRemoved by
kind clusters muscle and muscle-ckneDocker containers, plus contexts in your kubeconfigkubefit end
Mock exam clusters kubefit-exam-<track>Docker containers. Their kubeconfig is private to the exam session, not in ~/.kube/configkubefit end
kubefit-upgrade cluster from the CKA cluster upgrade drill, and the kubefit-etcd-recovery container and volume from the CKA etcd recovery drillDockerkubefit end (the recovery container and volume must carry the drill ownership label)
LFCS VMs kubefit-lfcs and kubefit-exam-lfcs, with their practice disksLima's own directorykubefit end
kind node and add-on imagesDocker's image cacheDocker (docker image prune), if you want the space back

Environment

VariableDefaultMeaning
KUBEFIT_SERVERhttps://app.kubefit.comAPI origin for login, packs and sync

Leave KUBEFIT_SERVER unset for normal use. The CLI refuses a server that is not HTTPS, except localhost and loopback addresses for development, with refusing insecure KUBEFIT_SERVER. It also refuses a URL that carries credentials and a redirect to a different origin. The environment overrides the server for that process only; it does not replace the saved server. A saved token is withheld when the selected server differs from the server that issued it. If an older CLI already saved an unintended override, correct the server in config.json and sign in again. A token is only valid for the server that issued it, and the CLI verifies packs against its built-in public key no matter which origin served them.