gini-toolkit — gBuilder
The GINI desktop app: a visual builder and live runtime for computer networking and cloud computing experiments, with an AI layer that can build, inspect and explain topologies.
Drag routers, switches, machines, VPCs and Kubernetes elements onto a canvas, press Run, and they come up as real containers you can open a shell into.
Install
pipx install gini-toolkit # `pip install gini-toolkit` works too
gbuilder
PySide6 and QtWebEngine come with it. There is no setup command to run — gBuilder checks what the machine needs the first time it launches and offers to install the container runtime and pull the images. Demo mode works before any of that exists, so the app is useful the moment it opens.
Requires Python 3.10+ and, for live Run, a container runtime (Docker, Colima or Podman).
What you get
- Canvas and palette — networking elements (routers, switches, OVS, machines, taps) alongside cloud ones (VPCs, subnets, load balancers, Kubernetes pods, serverless functions).
- Live Run — each element is a real container. Double-click a machine for a shell, a router for the Router Lab, a service for its web dashboard.
- SDN and NFV — a real OpenFlow data plane with a POX controller, and a flow-table view of what the switch is actually doing.
- xv6 — boot and modify a real RISC-V teaching kernel from inside a topology.
- Ask GINI — an assistant grounded in the topology on your canvas. Better with a local Ollama model; the deterministic modes work without one.
- Proof of work — record a lab session as a tamper-evident chain and hand in a receipt, for courses using the GINI Teaching Center.
From source
git clone https://github.com/citelab/gini && cd gini
./scripts/dev.sh install # editable installs of gini-core, gini-toolkit, gini-teaching-center
gbuilder
Use the script rather than pip install -e ./frontend-ng on its own: gini is a namespace
package split across gini-core (the domain model and proof format) and this distribution, and
installing one alone leaves half the tree unimportable — with an error that names a missing module
rather than a missing install.
QT_QPA_PLATFORM=offscreen python -m gini --selftest # headless smoke test
./scripts/dev.sh test # the suite
Layout
src/gini/
__main__.py the `gbuilder` entrypoint
ui/ canvas, palette, inspector, labs, theme system
services/ persistence, runtime, Teaching Center client, outbox
runtime/ container orchestration
agent/ programmatic API + MCP server, so external agents can drive GINI
setup/ first-run bootstrap (runtime detection, image pulls)
The domain model lives in the separate gini-core distribution, under gini.domain.
License & links
Part of the GINI project — https://github.com/citelab/gini
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 gini_toolkit-6.1.1.tar.gz.
File metadata
- Download URL: gini_toolkit-6.1.1.tar.gz
- Upload date:
- Size: 14.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e3ba624a6ea681f7bcb52e45ae113ff2a8f3fda5191a569e9330c7a0fe0af91e
|
|
| MD5 |
8d9b29b3e0c89c74c0a33dd2cc798f2a
|
|
| BLAKE2b-256 |
66c19405cd98da53782f472967abfc5d2161e762e21d9359d154bac3438e68a3
|
Provenance
The following attestation bundles were made for gini_toolkit-6.1.1.tar.gz:
Publisher:
gini-toolkit.yml on citelab/gini
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gini_toolkit-6.1.1.tar.gz -
Subject digest:
e3ba624a6ea681f7bcb52e45ae113ff2a8f3fda5191a569e9330c7a0fe0af91e - Sigstore transparency entry: 2636901765
- Sigstore integration time:
-
Permalink:
citelab/gini@6e8c39e211ab35c1632f6df3a2f11ab3ca20307c -
Branch / Tag:
refs/tags/v6.1.1 - Owner: https://github.com/citelab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
gini-toolkit.yml@6e8c39e211ab35c1632f6df3a2f11ab3ca20307c -
Trigger Event:
push
-
Statement type:
File details
Details for the file gini_toolkit-6.1.1-py3-none-any.whl.
File metadata
- Download URL: gini_toolkit-6.1.1-py3-none-any.whl
- Upload date:
- Size: 4.7 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e4c892e996f0feee3aa52cc3fc74562e7ba1233e473f584b9cc70ee27039bcc
|
|
| MD5 |
17dce1b0e623636603c45b1b6c204257
|
|
| BLAKE2b-256 |
83b7a19bc1c0148793258e3ed85a273c204fef4cafb600fab528e10e39563544
|
Provenance
The following attestation bundles were made for gini_toolkit-6.1.1-py3-none-any.whl:
Publisher:
gini-toolkit.yml on citelab/gini
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gini_toolkit-6.1.1-py3-none-any.whl -
Subject digest:
5e4c892e996f0feee3aa52cc3fc74562e7ba1233e473f584b9cc70ee27039bcc - Sigstore transparency entry: 2636901772
- Sigstore integration time:
-
Permalink:
citelab/gini@6e8c39e211ab35c1632f6df3a2f11ab3ca20307c -
Branch / Tag:
refs/tags/v6.1.1 - Owner: https://github.com/citelab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
gini-toolkit.yml@6e8c39e211ab35c1632f6df3a2f11ab3ca20307c -
Trigger Event:
push
-
Statement type: