Skip to main content

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

gini_toolkit-6.7.0.tar.gz (14.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gini_toolkit-6.7.0-py3-none-any.whl (4.8 MB view details)

Uploaded Python 3

File details

Details for the file gini_toolkit-6.7.0.tar.gz.

File metadata

  • Download URL: gini_toolkit-6.7.0.tar.gz
  • Upload date:
  • Size: 14.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for gini_toolkit-6.7.0.tar.gz
Algorithm Hash digest
SHA256 3463c8fe73dfa21ef2977a1926ee5ffe97f81b0e4c6a8877b0296e7431b8b537
MD5 6d7ec3648e51ef4f70791373a01530e4
BLAKE2b-256 faeb93f8ba6f49b88245bce9f198ea4d27c4dba717931688e013602d2cdd9f76

See more details on using hashes here.

Provenance

The following attestation bundles were made for gini_toolkit-6.7.0.tar.gz:

Publisher: gini-toolkit.yml on citelab/gini

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gini_toolkit-6.7.0-py3-none-any.whl.

File metadata

  • Download URL: gini_toolkit-6.7.0-py3-none-any.whl
  • Upload date:
  • Size: 4.8 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for gini_toolkit-6.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d64da330923e047d153f6862a512841a835ac3214967f57ead07582b8de684c4
MD5 a25bcac9b94ac2ab83ac89bdfd3bde12
BLAKE2b-256 841834917433a474a0505ce7a4ccdc37592c52824403ab97efe6ada642206ff2

See more details on using hashes here.

Provenance

The following attestation bundles were made for gini_toolkit-6.7.0-py3-none-any.whl:

Publisher: gini-toolkit.yml on citelab/gini

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

6.8.1

2 files

6.8.0

2 files

This release

6.7.0 This release

2 files

6.6.1

2 files

6.6.0

2 files

6.5.2

2 files

6.5.1

2 files

6.5.0

2 files

6.4.0

2 files

6.3.2

2 files

6.3.1

2 files

6.3.0

2 files

6.2.1

2 files

6.2.0

2 files

6.1.4

2 files

6.1.3

2 files

6.1.2

2 files

6.1.1

2 files

6.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page