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.5.0.tar.gz (14.8 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.5.0-py3-none-any.whl (4.8 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: gini_toolkit-6.5.0.tar.gz
  • Upload date:
  • Size: 14.8 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.5.0.tar.gz
Algorithm Hash digest
SHA256 c968d94cdc07e15c287277190c0ac6017daed24a4b4845886f11130cbfea9cca
MD5 a7a76ff7e4af697f51ae4a8bb3655e0e
BLAKE2b-256 f5b807b2eff1310356963c1d3e04744d06be491e66117f4b866d0402c8679de3

See more details on using hashes here.

Provenance

The following attestation bundles were made for gini_toolkit-6.5.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.5.0-py3-none-any.whl.

File metadata

  • Download URL: gini_toolkit-6.5.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.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6fb784a80280f9f1f5b979cdb3cfaf2c8d4ef08bd3b1b248af71b6f4894f2783
MD5 3f3422340ab3c6616275604938376ae1
BLAKE2b-256 cf4dc64999663bfa82e80c91d0a2c58e92117490175b6de6c3e02f20344948d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for gini_toolkit-6.5.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

6.7.0

2 files

6.6.1

2 files

6.6.0

2 files

6.5.2

2 files

6.5.1

2 files

This release

6.5.0 This release

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