Cyphernetes turns this: 😣
# Delete all pods that are not running
kubectl get pods --all-namespaces --field-selector 'status.phase!=Running' \
-o 'custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name' \
--no-headers | xargs -L1 -I {} bash -c 'set -- {}; kubectl delete pod $2 -n $1'
Into this: 🤩
// Do the same thing!
MATCH (p:Pod)
WHERE p.status.phase != "Running"
DELETE p;
📚 Documentation
For comprehensive documentation, visit our official documentation site at https://cyphernet.es/docs.
Cyphernetes is a Cypher-inspired query language for Kubernetes. A mixture of ASCII-art, SQL and JSONPath, it lets the user express Kubernetes graph operations in a fun and creative way. Cyphernetes works out-of-the-box with your CRDs, supports multi-cluster queries, and more.
There are multiple ways to run Cyphernetes queries:
1. Using the web client by running cyphernetes web from your terminal, then visiting http://localhost:8080
2. Using the interactive shell by running cyphernetes shell in your terminal
3. Running a single query from the command line by running cyphernetes query "your query" - great for scripting and CI/CD pipelines
4. Creating a Cyphernetes DynamicOperator using the cyphernetes-operator to define powerful Kubernetes workflows on-the-fly
5. Using the Cyphernetes API in your own Go programs.
// Get the desired and running replicas for all deployments
MATCH (d:Deployment)
RETURN d.spec.replicas AS desiredReplicas,
d.status.availableReplicas AS runningReplicas;
{
"d": [
{
"desiredReplicas": 2,
"name": "coredns",
"runningReplicas": 2
}
]
}
Query executed in 9.081292ms
Cyphernetes' superpower is understanding the relationships between Kubernetes resource kinds.
This feature is expressed using the arrows (->) you see in the example queries.
Relationships let us express connected operations in a natural way, and without having to worry about the underlying Kubernetes API:
// This is similar to `kubectl expose`
MATCH (d:Deployment {name: "nginx"})
CREATE (d)->(s:Service);
Created services/nginx
Query executed in 30.692208ms
Using Homebrew:
brew install cyphernetes
Using go:
go install github.com/avitaltamir/cyphernetes/cmd/cyphernetes@latest
Alternatively, grab a binary from the Releases page.
The Cyphernetes monorepo is a multi-package project that includes the core Cyphernetes Go package, a CLI, a web client, and an operator.
.
├── cmd # The CLI (this is where the cyphernetes binary lives)
│ └── cyphernetes
│ └── ...
├── docs # The cyphernet.es website
│ └── ...
├── operator # The operator
│ └── ...
├── pkg
│ └── core # The core Cyphernetes package (parser and engine behind the language features)
│ └── provider # An interface for different backend implementations
│ └── apiserver # A client for the Kubernetes API server
├── web # The web client
│ └── src
│ └── ...
To get started with development:
Clone the repository:
git clone https://github.com/avitaltamir/cyphernetes.git
Navigate to the project directory:
cd cyphernetes
Running make will build the operator manifests and web client static assets, then build the binary and run the tests.
make
make web-build
make operator-build
Contributions are welcome! Please feel free to submit pull requests, open issues, and provide feedback.
Cyphernetes is open-sourced under the Apache 2.0 license. See the LICENSE file for details.
$ claude mcp add cyphernetes \
-- python -m otcore.mcp_server <graph>