Kubernetes
Every kind in the cluster, your CRDs included, watched rather than polled.
Nothing in your cluster. Nothing proxied. Nothing polled.
Kubernetes, cloud access, containers, object stores, machines over SSH, databases and Kafka. Read straight from this machine, as you, with the credentials you already have. Nothing on screen is on a timer.
0.1.0 · Apple silicon, Intel and Linux · Start the 30 day trial, no card
The whole thing, in twenty-three seconds
Every kind in the cluster, your CRDs included, watched rather than polled.
AWS, Azure and Google identities, with sessions that mint and rotate the credentials you already use.
Docker, OrbStack, Colima, Rancher Desktop and rootless Podman, on their own sockets.
S3, MinIO, RustFS, R2 and Ceph RGW, in a cluster or outside one.
A host over SSH, with nothing installed at the far end.
Postgres, MySQL, MongoDB, Redis, ClickHouse and Neo4j, read and write.
Topics, consumer groups, and lag per partition drawn over time.
Not a screenshot
A recording can show a menu opening. It cannot show you that the menu is on the row you care about, that it reaches the keyboard, or that its verbs are grouped by what you came to do. So this one is real, and it is yours to open.
Interactive mock This is a working mock of the resource list, holding six invented pods. It reads nothing, contacts nothing and changes nothing: the line under it says what the real app would do instead of pretending to have done it. Every other picture and recording on this page is the real interface.
Every invented row has been taken off. The button under the frame puts them back.
Nothing has been asked for yet. Whatever you pick, this line will say what the real app does with it.
The real menu carries more: a node gets cordon, drain and taints, a deployment gets scale, pause and undo, and anything with an image gets a Trivy or Wiz scan. Every one of them ends up in the same place, on the row, under the right mouse button.
Kubernetes
Every kind in the cluster, watched rather than polled, with the cause ranked above the forty lines it caused.
Containers
Docker, OrbStack, Colima, Rancher and rootless Podman on their own sockets, in the same window and the same dock.
Object stores
S3, MinIO, RustFS, R2 and Ceph RGW, in a cluster or outside one.
Databases
Postgres, MySQL, MongoDB, Redis, ClickHouse and Neo4j, read and write, through the cluster or straight at a host.
The modules
Not a Kubernetes client with a few things bolted to the side. Every module is a peer, every one of them is in the price, and each says what is on this machine right now rather than what it saw last time.
Kubernetes
Every kind in the cluster including your CRDs, watched rather than polled. Fifteen rules over events, pod statuses, node conditions and recent changes rank what started it above the forty lines it caused, and a rolling thirty days of history answers what changed just before.
Logs that pause when you scroll, with the previous container while this one crash loops
Shells, port forwards and YAML editing with the diff shown before anything is written
Helm, Argo CD, RBAC, cost per workload, rollouts, drift and time travel
Cloud access
AWS, Azure and Google identities, with sessions that mint and rotate the credentials the rest of your terminal is already using. Selecting a cluster activates the session that authenticates it, so the loop of noticing a call failed, switching tools and coming back never starts.
AWS: IAM users with MFA, roles chained from any session, SAML federation and Identity Center
Azure: the CLI sign-in, service principals, workload and managed identity, and AKS without kubelogin
Google: gcloud accounts, service accounts, impersonation and workload identity, and GKE with no auth plugin
No cloud CLI is ever run, and nothing is installed: every sign-in is the documented OAuth exchange, through your proxy
Containers
Docker Desktop, OrbStack, Colima, Rancher Desktop and rootless Podman, found on their own sockets and read over the same live wire as everything else. Logs and a shell go in the dock, beside the cluster you were already reading.
Containers, images, volumes, networks, compose projects and registries
Build, pull, push and run, with the output where you are
The same list whether the engine is Docker or Podman, because both speak the same API
Object stores
S3, MinIO, RustFS, SeaweedFS, Garage, Ceph RGW and anything else that speaks S3. A store running in your cluster is reached through the API server with no port bound on your machine, which is the part every other tool makes you do by hand.
Stores found from the pods that run them, with the keys read out of the Secret on request
Preview text, JSON, images, Parquet and logs in place; presigned links with the expiry you choose
An upload that survives the app closing and carries on from the part it reached
Machines
A host over SSH and no agent at the other end. Processes, services, logs, files, a shell, and its usage drawn over time, from the same window as everything else.
Processes and services with the usual controls, and journal or file logs tailed live
A file browser with upload and download, and a terminal that is a real terminal
CPU, memory, disk and network kept for thirty days, on your machine rather than theirs
Databases
Postgres, MySQL, MongoDB, Redis, ClickHouse and Neo4j, from a pod, a host you type, or AWS RDS with an IAM token minted from a cloud session. Insert, update, delete, DDL and transactions held open across statements.
An editable result grid that writes against the primary key
A statement that would touch a whole table asks once, and says how many rows
Redis keys by pattern, Mongo collections, ClickHouse parts, and a Neo4j graph you can walk
Kafka
Topics, partitions, consumer groups and their lag, from brokers in a pod, at a host, or in AWS MSK with SASL/IAM. Lag is drawn over time rather than sampled once, so a consumer that is falling behind looks different from one that is simply behind.
Peek at recent messages, with Avro and protobuf decoded through the schema registry
Produce a message when you mean to, with the key and headers you choose
Jump from a lagging group to the pods that make it up
Everything you run.
One window.
Nothing installed in your cluster.
How it reads
Kill a pod in a terminal and it is out of the list before you have switched windows. Write a kubeconfig while Mjolnir is open and the cluster turns up on its own. No screen in this product has a refresh button, because not one of them has anything to catch up on.
The assistant
It is built in, and it answers through whichever provider you name: Anthropic, OpenAI, Azure, Google, Groq, Mistral, OpenRouter, xAI, or a model on your own hardware through Ollama. We are not reselling you tokens, and your question does not travel through us on its way to a model somebody else chose.
It calls the same tools the window calls, so what it tells you came out of your own infrastructure a second ago: the reason, the exit code, the line in the log. Not what usually goes wrong with things like this.
Paste a key, name an endpoint, and the request goes from this machine to that endpoint and nowhere else. Point it at a model on your own hardware and the whole conversation stays in the building.
Whether it may change anything at all is yours to set. Turn read only on, for everything or for one cluster, and it is refused where your own click is refused: somebody who guarded production did not mean "unless a model asks nicely".
Every named thing in the app has a right-click menu, and every one of those menus ends with "Ask the assistant", already carrying what you clicked. Turn the MCP server on and the agent you already use reaches the same tools.
What leaves this machine
There is no cloud of ours between you and your infrastructure, because there is no cloud of ours. Mjolnir talks
to *.mjolnir.sh for three named reasons and refuses every other address before the request is made.
That is a rule in the code, not a promise on a page.
No agent, no operator, no CRD, no Helm chart, no sidecar. It calls the API server with the credentials already in your kubeconfig, exactly as kubectl does, so a read-only token stays a read-only token.
No daemon, nothing in your login items, and nothing added to your PATH. Image scans use the Trivy you already have, with your own registry logins. Uninstalling is dragging it to the bin.
Crash reports and anonymous counters are on, and off in one tap. Settings, Privacy shows the exact JSON waiting to be sent before any of it goes, and empties the queue when you turn a switch off.
Before you install it
No. No agent, no operator, no pod, no CRD, no Helm chart, no sidecar, nothing to get approved and nothing to rip out later. It calls the API server with the credentials already in your kubeconfig, exactly as kubectl does, so a read-only token stays a read-only token.
No. There is no daemon and nothing in your login items, and Mjolnir puts nothing on your PATH. Helm, which renders charts, is inside the app. Image scanning uses the Trivy you already have, found on your PATH with your own registry logins, and Wiz can be added as a second scanner. Uninstalling is dragging it to the bin.
Nowhere. Your clusters, containers, object stores, databases and hosts are reached straight from your machine, as you. Mjolnir contacts mjolnir.sh for updates, licensing and telemetry you can switch off, and any address that is not under that apex is refused before the request is made.
macOS on Apple silicon and Intel, and Linux as an AppImage or a deb. Windows is a build target rather than a rewrite, and it is not released yet.
Thirty days of the whole product with no card, then $9 per person per month or $90 a year, on up to five machines. One price, every module, no tiers, and nothing behind a call with a salesperson.
It is yours. You name the endpoint and paste your own key: Anthropic, OpenAI, Azure, Google, Groq, Mistral, OpenRouter, xAI, or a model on your own hardware through Ollama. The request goes from your machine straight to that provider, so no question of yours passes through us and we are not reselling you tokens. It is good because it is not guessing: it calls the same tools the app calls and reads your live state before it answers.
Only if you let it, and you decide. It is a setting, and read only mode is the guard above it: turn read only on, globally or for one cluster, and a write is refused at the same checkpoint that refuses your own click. Turn the MCP server on and an agent you already use reaches the same tools, under the same rule.
No, and the difference is worth being exact about. Mjolnir is licensed under the Elastic License 2.0, which is source available rather than open source: the source is published at github.com/jn-aman/mjolnir, so you can read every line of what runs on your machine and build it yourself. A build from source asks for a licence key exactly as the download does, and your subscription covers it as one of your five machines. The licence does not allow removing or working around the licence key, offering Mjolnir to others as a hosted or managed service, or removing its notices. Everything this site says the app does is a claim you can go and check.
Not a sampler. Every module, every cluster, every kind, the assistant included, and a card only if you decide to keep it. A cut-down trial answers a question nobody asked.