ai-startup-skills
AI 제품을 만드는 스타트업을 위한 7단계 에이전트 스킬: 검증 → 비즈플랜 → 정책 → 로드쇼 → 고객 확보 → 가격 책정 → 등록
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기kutu-doctor: live memory-health dashboard and control CLI for kutu OS
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗kutu-doctor is the M2 companion tool for
kutu OS — the RAM-sipping Linux desktop. One
screen shows the whole memory stack live; a handful of commands verify it,
switch modes, inspect per-app ceilings and revert everything to stock.
╭─ kutu-doctor ──────────────────────────────────────────────────────╮
│ memory │ stack │
│ ram ━━━━━━━━━ 9.8 GiB/ │ mglru ● on · ttl 1000 ms │
│ 16.0 GiB │ damon on │
│ swap ━ 300.0 MiB/8.0 GiB │ oomd ● on │
│ pressure some ▏0.12% full │ thp madvise │
│ ▏0.00% │ user.slice MemoryHigh 14.1 GiB │
│ zswap │ firefox ceiling 8.0 GiB (50%) │
│ state zstd · cap 35% · │ top consumers │
│ shrinker on │ user.slice ━━ 1.5 GiB │
│ pool ━━ 512.0 MiB / │ session-1.scope ━ 1.1 GiB │
│ 5.6 GiB │ system.slice ▏ 200.0 MiB │
│ compression ━ ≈1.0× │ NetworkManager.service ▏ 50.0 MiB │
╰─────────────────────────────┴───────────────────────────────────────╯
Live view, refreshed every couple of seconds, until Ctrl-C.
| Command | What it does |
|---|---|
kutu-doctor | The live dashboard (same as dash). |
kutu-doctor dash [-i SECONDS] | The live memory-health dashboard: RAM/swap bars, PSI gauges, zswap pool + compression ratio, stack states, ceilings and the top cgroup memory consumers. |
kutu-doctor status [--json] | One-shot snapshot of the same data (JSON for scripting). |
kutu-doctor check [--json] | The kutu-check-kernel contract in friendlier clothes: verifies every kernel feature and service the stack relies on, with fix hints. Exits non-zero on failures. |
kutu-doctor mode | Shows the current mode and the one recommended for this machine's RAM. |
kutu-doctor mode set <mode> | Persists the mode and applies its ceilings live — writes /etc/kutu/memory.conf, the user.slice drop-in and the app ceilings, then applies them via systemctl set-property --runtime (no reboot). Needs root. |
kutu-doctor mode apply | Re-applies the persisted mode (idempotent; useful after editing profiles). |
kutu-doctor apps | Lists the profiles in /etc/kutu/apps.d with their effective MemoryHigh. |
kutu-doctor apps run <profile> <cmd...> | Runs a command inside its memory-ceiling systemd scope (same semantics as kutu-run, unique scope names). |
kutu-doctor reset [--yes] | Runs kutu-reset from kutu-memory: the whole stack back to stock Arch defaults. |
kutu-doctor version | Version. |
The ceiling matrices are locked by the kutu OS design spec (§6–§7) — this tool applies them, it doesn't invent them:
| Mode | Chosen when | user.slice | firefox |
|---|---|---|---|
saver | < 6 GiB | 85% | 40% |
balanced | 6–16 GiB | 90% | 50% |
performance | > 16 GiB | 95% | 70% |
kutu-doctor mode set is the user-facing mode switch the OS documentation
promised — it edits exactly the files kutu-firstboot writes (memory.conf,
the user.slice drop-in, apps.d ceilings) and then applies them live, so
no reboot is needed. Custom values in non-builtin app profiles are left
untouched.
On kutu OS it ships as the kutu-doctor package (preinstalled). Everywhere
else it's a plain Python package with two runtime dependencies — any Linux
distro with Python ≥ 3.10 works:
pipx install kutu-doctor # from PyPI
pipx install git+https://github.com/kutuso/doctor.git # bleeding edge
(Debian/Ubuntu/Fedora: pipx via your package manager or pip; the package
itself is pure Python — no compilation, no distro-specific code.)
Nothing is hardcoded to kutu OS or Arch:
/proc and /sys (meminfo, PSI, zswap, MGLRU, DAMON,
cgroups) — present on any modern mainline kernel regardless of distro.systemctl calls are for status checks and mode application; on non-
systemd systems the service probes degrade to ? and everything else
still works.status show
the kernel-side stack, check tells you exactly what's absent with fix
hints, mode set errors cleanly (no /etc/kutu to calibrate), and
reset points you at the kutu repository. Mode switching becomes useful
as soon as kutu-memory/kutu-base are installed — on Arch or an
Arch-derivative that's one pacman.conf stanza away.That's also why distro coupling was never a problem: kutu OS vendors this repo as a package, but the tool itself only reads standard kernel interfaces and writes files the kutu packages document.
The tool honors the same conventions as the shell tools in kutu OS, which is also how the test suite fakes a whole machine:
| Variable | Replaces | Used for |
|---|---|---|
KUTU_ROOT | / (prefix for /etc) | read-only inspection of a target/chroot; mutating commands refuse to run |
KUTU_SANDBOX=1 | — | opt-in test sandbox (with KUTU_ROOT): enables the command stubs and skips the root check |
KUTU_SYSFS | /sys | fake sysfs trees |
KUTU_PROC | /proc | fake meminfo/PSI |
KUTU_SYSTEMCTL | systemctl | command stubs |
KUTU_SYSTEMD_RUN | systemd-run | command stubs |
KUTU_DRY_RUN=1 | — | apps run prints the command instead of exec'ing |
check exits 0 when everything passed, 1 when a check failed, and 2
when checks could not be determined (no systemd, unreachable bus).
status and check emit JSON with --json:
kutu-doctor status --json | jq '.zswap'
kutu-doctor check --json | jq '.checks[] | select(.ok == false)'
python3 -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"
pytest # unit tests over a full fake /sys + /proc + /etc tree
ruff check . # lint
The tests never touch the real system — they build a fake kernel tree and
systemctl stubs per test (tests/conftest.py), in the spirit of the kutu OS
repo's host-safety rules.
Fakes prove the parsing logic; they can't prove the tool reads a real kernel or that its writes actually land. For that, boot the real thing:
make vmtest # or: scripts/vmtest.sh
This boots the latest kutu OS ISO from ../os/out/ (override with
KUTU_ISO=...) in QEMU — inside a disposable docker container, KVM when
available — shares this repo into the live VM over 9p, and runs
scripts/vm_kernel_check.py against the genuine kernel. It verifies the
baseline stack and then mutates real state and asserts the tool observes
it:
echo 20 > /sys/module/zswap/parameters/max_pool_percent → the reader
sees 20 and check flags zswap-pool-cap; restored → clean againecho 500 > /sys/kernel/mm/lru_gen/min_ttl_ms → seen + flaggedkutu-damon stop / start → the reader tracks the kdamond statemode.set_mode("performance") → the user.slice drop-in is rewritten,
systemctl set-property --runtime applies it, and
/sys/fs/cgroup/user.slice/memory.high reflects the exact bytes —
then restores the mode appropriate for the VM's RAMThe VM is disposable, so kernel-state mutation is the point, not a hazard.
CI runs only the unit suite (there is no published ISO artifact yet);
make vmtest is the pre-release gate, exactly like make smoke in the OS
repo.
kutu-doctor is published on PyPI.
Tags vX.Y.Z publish automatically via
trusted publishing (workflow:
.github/workflows/pypi.yml) once a maintainer registers the project on
PyPI with publisher kutuso/doctor, workflow pypi.yml, environment
pypi — until then, uploads happen manually with twine.
kutu-doctor for live memory-health visibility (the
PSI-driven kutu-memoryd policy daemon is the other half and stays on the
OS side).packages/kutu-doctor/ in kutuso/os). After changing this repo, run
make vendor and bump the package's pkgrel over there.kutu-base,
kutu-memory) — nothing else on disk.systemctl daemon-reload + systemctl set-property --runtime.check tells you what's
absent, and reset points you at the kutu repository.MIT licensed — see LICENSE.