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

Uploaded Python 3

File details

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

File metadata

  • Download URL: gini_toolkit-6.8.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.8.0.tar.gz
Algorithm Hash digest
SHA256 100931b706250ea1afd06be632146a2f42f5558227bb69704ced281a2d3e8486
MD5 35c4d766db8d9ce7ded8a666ebe19424
BLAKE2b-256 faa656d71de33df59fd61e3ddbd4ec9bc662dff7ece58188f1c4219f74c87a64

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gini_toolkit-6.8.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.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 37a0de956d0b0611ab16fca7ecd6777bb9c1238b5ee5b33cc306039c7188c506
MD5 93b56d1257be63948a8402ecef814fe9
BLAKE2b-256 d7e38262f3af1e627c6dc94ac965615ba6642094bd67a87641c27cce9c901d4f

See more details on using hashes here.

Provenance

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

This release

6.8.0 This release

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

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