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.1.3.tar.gz (14.7 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.1.3-py3-none-any.whl (4.7 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: gini_toolkit-6.1.3.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

Hashes for gini_toolkit-6.1.3.tar.gz
Algorithm Hash digest
SHA256 77523a94d7f95cb6de76acf7a57a91d95aefa0c5f00c4294409b955f95009e09
MD5 d5db2012f9b59c1041118517e70598e3
BLAKE2b-256 ac1f978a13da0be7d4f9b3c9a6d9a031c9c911070772182afb42f322e17008ef

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gini_toolkit-6.1.3-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

Hashes for gini_toolkit-6.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 fa9cc9933d4792b3aaddce718bdbf9763c416ec9d607fc78f654ea598487a8fc
MD5 cbb25dd8b2172837f463a4824f4a2ef5
BLAKE2b-256 613cfc8cfa5984d392f985c958ec6303cf438bcd999b40ced1c4395f3d7f165b

See more details on using hashes here.

Provenance

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

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

This release

6.1.3 This release

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