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.6.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.6.0-py3-none-any.whl (4.8 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: gini_toolkit-6.6.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.6.0.tar.gz
Algorithm Hash digest
SHA256 343c2fcc7a89d054e8c4a06e716354423036e7379472fedd32c014272d0a2b98
MD5 a32d7216e8b87c4995ec546c6283244b
BLAKE2b-256 e62e5b2f438bcc5639f8ae3fe57b2ffd59b5af95c9c6dd72be262195e6e8096f

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gini_toolkit-6.6.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.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9364ed075e4dafdad194e5356f594686d2662a27f3040774c46bbb285caeda2d
MD5 19f24f83748252ea417876ce831fa957
BLAKE2b-256 3824aa8cb065865ad3f3e1122f0067cf1834cea4e2cdf5aa7c9b0afe7cd77150

See more details on using hashes here.

Provenance

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

This release

6.6.0 This release

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