PitchHut logo
http-nu
Nushell-scriptable, cross.stream-powered, Datastar-ready HTTP server that fits in your back pocket
Pitch

Script HTTP handlers in Nushell with zero boilerplate — closures become endpoints.

Built-in:

  • SSE & Datastar SDK
  • Jinja2 templates & HTML DSL
  • Reverse proxy & static files
  • Embedded event store (cross.stream)
  • TLS/HTTP2, hot-reload, UNIX sockets

Written in Rust. 🐘💫🚀💜

Description

http-nu

A Rust HTTP server where Nushell closures are your request handlers. No framework, no config files — just pipe data through endpoints.

http-nu :3001 -c '{|req| "Hello world"}'

Why http-nu

  • Nushell-native: Closures become endpoints. $in streams request bodies. Pipeline metadata sets status codes and headers.
  • Real-time first: Built-in SSE via to sse, Datastar SDK for hypermedia, and streaming responses via generate.
  • Embedded event store: Optional cross.stream integration (--store) for append-only state, content-addressed storage, and live-reload handlers from store topics.
  • Batteries included: Jinja2 templates (.mj), HTML DSL, reverse proxy, static file serving, cookie management, syntax highlighting, Markdown rendering.
  • Production-ready: TLS/HTTP2, UNIX domain sockets, trusted proxy support, structured JSONL logging, hot-reload with --watch.

Quick start

# Install
brew install cablehead/tap/http-nu  # macOS
cargo binstall http-nu              # or via cargo
nix-shell -p http-nu                # or Nix

# Run
http-nu :3001 ./serve.nu

# With embedded store + Datastar
http-nu --datastar --store ./store :3001 ./serve.nu

Who it's for

Developers who want to ship HTTP services in Nushell without reaching for a full web framework. Quickly expose shell scripts as HTTP endpoints, build real-time dashboards with SSE and Datastar, or ship internal tools and hypermedia UIs — all without leaving the shell.

0 comments

No comments yet.

Sign in to be the first to comment.

http-nu - Nushell-scriptable, cross.stream-powered, Datastar-ready HTTP server that fits in your back pocket