Skip to main content
Drop a star to support Nu ⭐ Join the Nu Discord community
Nu

Nu – the interaction primitive

Build apps in one primitive that spans your whole stack — databases, UIs, AI agents, and services. No glue. 50x less code.

Discord Twitter Follow

Platform Support PyPI - Python Version PyPI Package License PyPI Downloads



AboutQuick StartEcosystemSpecExamplesDocumentationCommunity


ℹ️ About

Every app is a set of interactions between systems: a database, a UI, AI agents, services. Nu names those interactions directly:

  • Ref names what you touch. A KV slot, a UI widget, an LLM endpoint, a memory slot, a remote object.
  • Interaction describes what to do with it. Read, write, branch, iterate, compose.
  • Fabric binds Refs to a real backend.

Persistence, reactivity, atomicity, observability, and scalability are inherent, not bolted on.

🏁 Quick Start

They say a good example is worth 100 pages of API documentation, a million directives, or a thousand words.

Well, "they" probably lie... but here's an example anyway:

import nu

class Counter(nu.Shape):
    value: nu.v.IntRef

class Dashboard(nu.ui.Page):
    count: nu.ui.TextRef

class App(nu.ui.Index):
    pages = nu.ui.Pages({"/": Dashboard})

app = nu.With(
    nu.v.rocksdb_navigator(".dbcounter"),
    nu.ui.server(
        nu.v.auto_flow_atomic(
            nu.ReactForever(
                Counter.value.on_change(),
                Dashboard.count.set(Counter.value),
            ),
        ),
    ),
    body=nu.v.auto_flow_atomic(
        nu.IfDo(Counter.value.missing(), Counter.value.set(0))
        >> nu.ForeverDo(
            Counter.value.inc() >> nu.Delay(1.0),
        )
    ),
)

if __name__ == "__main__":
    import asyncio
    asyncio.run(nu.arun(app))

A dashboard on a live counter that persists across restarts. One Nu tree, two Fabrics. Kill it, run again, it picks up where it left off.

Install

Python 3.10+.

pip install "nustack-py[all]"

For lean installs and source builds see nustack.dev/docs/how-to/install.

Run

Save the snippet above as app.py, then:

python app.py

Open the browser tab that pops up — the counter ticks once a second, the dashboard mirrors it live.

More in examples/. Full walkthrough at nustack.dev/docs.

🌍 Ecosystem

Fabrics

Each fabric binds Refs to a real backend and unlocks a new capability.

Fabric What
nu.mem In-memory state fabric. Perfect for cache, hot state, and in-process coordination.
nu.v Persistent state fabric. Refs over a KV backend (RocksDB, LMDB); transactions, snapshots, and change notifications, built in.
nu.ui Web UI fabric. Same fabric shape as the others, but the Refs are widgets — text, buttons, tables — rendered in the browser and live-updated as your state changes.
nu.invisibles Network fabric. Puts other fabrics on the network — bind a fabric in one process, use it from another; same Refs, same interactions, over TCP or Unix socket.
nu.ray Cluster compute fabric. Teleport a Nu tree to any worker in your Ray cluster; it runs there and returns the result.

Apps built on Nu

End-user tools written as Nu programs.

Repo What
nustackdev/nulog Pure-Python, serverless logger and metrics store. Log and observe metrics from any Python code; entries persist to an embedded KV store and scale to billions, in-process. One line boots a live viewer.

📐 Spec

Nu is a reference implementation of the interaction model — a language-agnostic specification of what an interaction is, how Refs name locations, and how Interactions compose into programs.

nustackdev/interaction-model

🛣️ Roadmap

TODO.

👥 Community

Nu README badge

Add a Nu badge to your README if you're building on Nu:

Nu

[![Nu](https://img.shields.io/badge/built%20with-Nu-%237A4CE0)](https://github.com/nustackdev/nu)

Contributing to Nu

Considering contributing to Nu? Start by opening an issue or a PR — the codebase is small and readable, and the model is stable enough to build on.

More questions?

  1. Read the docs
  2. Open a feature request or report a bug
  3. Join the Discord community

License

Apache-2.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nustack_py-0.1.7.tar.gz (1.7 MB view details)

Uploaded Source

Built Distribution

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

nustack_py-0.1.7-py3-none-any.whl (432.7 kB view details)

Uploaded Python 3

File details

Details for the file nustack_py-0.1.7.tar.gz.

File metadata

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

File hashes

Hashes for nustack_py-0.1.7.tar.gz
Algorithm Hash digest
SHA256 fe9a858068e4cb52eead222f3ba60970f69bb35c40390c5ed03ac649dcdff5e1
MD5 22145655961758ffe0c527fdce7a3093
BLAKE2b-256 effe577645baf38ff89e483ebdeb267252d0a4416e3ca5fe4ff7d484c5b612b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for nustack_py-0.1.7.tar.gz:

Publisher: publish-nu.yml on nustackdev/nu

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

File details

Details for the file nustack_py-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: nustack_py-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 432.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for nustack_py-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 2cd49eafd7dcb35a3fe798a49e0186dfd18a7c990282b0df4f2779066fffb5ed
MD5 e7157fac5904baaffd207fdd7b1ac98e
BLAKE2b-256 5afe6d01a7885888fe5eea3cf4f428888e3c3c649d5ca3e452901bb12b1c1929

See more details on using hashes here.

Provenance

The following attestation bundles were made for nustack_py-0.1.7-py3-none-any.whl:

Publisher: publish-nu.yml on nustackdev/nu

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

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page