| Drop a star to support Nu ⭐ | Join the Nu Discord community |
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.About • Quick Start • Ecosystem • Spec • Examples • Documentation • Community
ℹ️ 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.
🛣️ Roadmap
TODO.
👥 Community
Nu README badge
Add a Nu badge to your README if you're building on Nu:
[](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?
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe9a858068e4cb52eead222f3ba60970f69bb35c40390c5ed03ac649dcdff5e1
|
|
| MD5 |
22145655961758ffe0c527fdce7a3093
|
|
| BLAKE2b-256 |
effe577645baf38ff89e483ebdeb267252d0a4416e3ca5fe4ff7d484c5b612b7
|
Provenance
The following attestation bundles were made for nustack_py-0.1.7.tar.gz:
Publisher:
publish-nu.yml on nustackdev/nu
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nustack_py-0.1.7.tar.gz -
Subject digest:
fe9a858068e4cb52eead222f3ba60970f69bb35c40390c5ed03ac649dcdff5e1 - Sigstore transparency entry: 2369063576
- Sigstore integration time:
-
Permalink:
nustackdev/nu@6da3e80e38943cf6874626d3dcbe8c21a1580f25 -
Branch / Tag:
refs/tags/nu@0.1.7 - Owner: https://github.com/nustackdev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-nu.yml@6da3e80e38943cf6874626d3dcbe8c21a1580f25 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2cd49eafd7dcb35a3fe798a49e0186dfd18a7c990282b0df4f2779066fffb5ed
|
|
| MD5 |
e7157fac5904baaffd207fdd7b1ac98e
|
|
| BLAKE2b-256 |
5afe6d01a7885888fe5eea3cf4f428888e3c3c649d5ca3e452901bb12b1c1929
|
Provenance
The following attestation bundles were made for nustack_py-0.1.7-py3-none-any.whl:
Publisher:
publish-nu.yml on nustackdev/nu
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nustack_py-0.1.7-py3-none-any.whl -
Subject digest:
2cd49eafd7dcb35a3fe798a49e0186dfd18a7c990282b0df4f2779066fffb5ed - Sigstore transparency entry: 2369063654
- Sigstore integration time:
-
Permalink:
nustackdev/nu@6da3e80e38943cf6874626d3dcbe8c21a1580f25 -
Branch / Tag:
refs/tags/nu@0.1.7 - Owner: https://github.com/nustackdev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-nu.yml@6da3e80e38943cf6874626d3dcbe8c21a1580f25 -
Trigger Event:
push
-
Statement type: