A terminal UI for Kubernetes focused on fast operational workflows
Project description
kuno
A terminal UI for Kubernetes, focused on the parts of cluster work that happen most often: finding a resource, tailing its logs, reading a manifest or describe output, checking events. Everything is keyboard-driven and fast.
Requirements
- uv
- A valid kubeconfig
Install
uv tool install kuno
If you don't have uv:
curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install kuno
kuno requires Python 3.14+. If your system Python is older, uv automatically downloads a compatible interpreter.
Then run:
kuno
To update:
uv tool upgrade kuno
Install from source
git clone https://github.com/1cadumagalhaes/kuno
cd kuno
uv sync
uv run python -m kuno
Usage
kuno [-c CONTEXT] [-n NAMESPACE] [-d]
| flag | description |
|---|---|
-c, --context |
Kubernetes context to use (overrides config default) |
-n, --ns, --namespace |
Namespace to use (overrides config default) |
-d, --debug |
Write debug output to /tmp/kuno_debug.log |
Navigation
j / k or arrow keys move through the resource list. g / G jump to top and bottom.
Press : to open the command bar, or ctrl+p for the Textual system command palette.
Key Bindings (main explorer)
| Key | Action |
|---|---|
j / k or arrows |
Navigate list |
g / G |
Jump top / bottom |
Enter |
Drill into selected resource |
d |
Describe selected resource |
i |
Toggle Info side panel |
y |
View YAML manifest |
r |
Refresh current view |
L or l |
Open Logs for selected resource |
C |
Jump to Contexts view |
N |
Jump to Namespaces view |
ctrl+d |
Delete selected resource (with confirmation) |
ctrl+r |
Restart selected deployment/statefulset (with confirmation) |
ctrl+e |
View Events |
ctrl+o |
Sort cycle |
Backspace |
Go back |
? |
Show all keybindings |
: |
Open command bar |
ctrl+p |
Textual system command palette |
: Commands
| command | description |
|---|---|
:pods / :containers |
switch to pods / containers |
:deploy / :deployments |
switch to deployments view |
:sts / :statefulsets |
switch to statefulsets view |
:svc / :services |
switch to services view |
:pvc |
switch to PVC view |
:secrets |
switch to secrets view |
:contexts |
switch to contexts view |
:namespaces / :ns [name] / :namespace [name] |
switch or set namespace |
:ctx <name> |
switch context |
:logs |
open logs for selected resource |
:yaml |
view raw manifest |
:describe |
describe output with inline events |
:events |
view events |
:del / :delete |
delete selected resource (with confirmation) |
:restart |
rollout restart selected resource (with confirmation) |
:info / :hide-info |
toggle the info side panel |
:config |
open config screen |
:theme [name] |
cycle or set theme |
:help |
show this command list |
Logs Screen
| Key | Action |
|---|---|
y / ctrl+c |
Copy text selection (if any) |
d |
Open log detail panel |
f |
Toggle follow mode |
j / k |
Previous / next line |
g / G |
Jump to top / bottom |
/ |
Focus filter input |
s |
Focus since (time) input |
t |
Toggle timestamps |
w |
Toggle line wrapping |
m |
Cycle display mode (raw / structured) |
r |
Reload logs |
ctrl+u |
Clear filter |
n / N |
Cycle search matches |
[ / ] |
Previous / next pod (workload views) |
ctrl+h / ctrl+l |
Previous / next container |
Manifest / Describe Screens
/ toggles search. [ and ] jump between YAML keys at any nesting level.
Configuration
kuno reads from ~/.config/kuno/config.toml on startup and writes back when you save from :config.
[ui]
theme = "nord"
yaml_theme = "monokai"
[logs]
wrap = false
timestamps = false
mode = "raw" # raw or structured
tail_lines = 500
[defaults]
# context = "my-context"
# namespace = "default"
theme accepts any Textual built-in theme. yaml_theme accepts any Pygments style name.
Development
uv sync
make test
make check # format + lint + typecheck + tests
make run # run against current kubeconfig
To target a specific context or namespace during development:
make run CTX=my-context NS=my-namespace
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kuno-0.1.0.tar.gz.
File metadata
- Download URL: kuno-0.1.0.tar.gz
- Upload date:
- Size: 48.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef53c80f5df45b2f5b7a6b20cdb3748cbc3d080dcac1f25cb6a7891a450d481d
|
|
| MD5 |
9668a35f56335cf440f8e4b95aba3437
|
|
| BLAKE2b-256 |
c99f97340148134864de005d75c048137e548b7643ab7077ab822b0ec57dfb4f
|
Provenance
The following attestation bundles were made for kuno-0.1.0.tar.gz:
Publisher:
release.yml on 1cadumagalhaes/kuno
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kuno-0.1.0.tar.gz -
Subject digest:
ef53c80f5df45b2f5b7a6b20cdb3748cbc3d080dcac1f25cb6a7891a450d481d - Sigstore transparency entry: 1769584740
- Sigstore integration time:
-
Permalink:
1cadumagalhaes/kuno@6a702132f583437cfca655dca454ded6971260dd -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/1cadumagalhaes
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@6a702132f583437cfca655dca454ded6971260dd -
Trigger Event:
push
-
Statement type:
File details
Details for the file kuno-0.1.0-py3-none-any.whl.
File metadata
- Download URL: kuno-0.1.0-py3-none-any.whl
- Upload date:
- Size: 53.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e5495f609e3463a22cb55a6c09f9e4c898241605164b0be34443d2c2339bba91
|
|
| MD5 |
4c5031333b59c23bdeafbd015fb491ad
|
|
| BLAKE2b-256 |
c413db569ac18cf1637752d180e31b6a128dcabf305d9c67b7f9c52ae59ea21e
|
Provenance
The following attestation bundles were made for kuno-0.1.0-py3-none-any.whl:
Publisher:
release.yml on 1cadumagalhaes/kuno
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kuno-0.1.0-py3-none-any.whl -
Subject digest:
e5495f609e3463a22cb55a6c09f9e4c898241605164b0be34443d2c2339bba91 - Sigstore transparency entry: 1769585319
- Sigstore integration time:
-
Permalink:
1cadumagalhaes/kuno@6a702132f583437cfca655dca454ded6971260dd -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/1cadumagalhaes
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@6a702132f583437cfca655dca454ded6971260dd -
Trigger Event:
push
-
Statement type: