Skip to content

Releases: nerdit-ai/nerdit

nerdit v0.9.1

Choose a tag to compare

@lwi00 lwi00 released this 14 Oct 09:00

Nerdit v0.9.1 — local AI PaaS node.

Install

curl -fsSL https://get.nerdit.ai | sh
nerdit link NL-XXXX-XXXX

Pin this version with NERDIT_VERSION=0.9.1.

Assets

file platform
nerdit-0.9.1-linux-x86_64.tar.gz Linux x86_64 (glibc 2.35+)
nerdit-0.9.1-linux-arm64.tar.gz Linux arm64 (glibc 2.35+)
nerdit-0.9.1-macos-arm64.tar.gz macOS arm64 (Apple silicon)

SHA256SUMS covers the three tarballs; SHA256SUMS.sig is an
ECDSA P-256 signature over it, made with the key published below and as
the asset nerdit-release.pub.pem. The installer verifies both
before extracting. To check by hand:

sha256sum -c SHA256SUMS
openssl dgst -sha256 -verify nerdit-release.pub.pem \
  -signature SHA256SUMS.sig SHA256SUMS

Release public key

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErD99ocEK39T60IgnOpitYeNoHD+V
qwskFP+Z5xTkEFhI+zNwUBr06bBcVTzBH71xc472T0ZHRrr5aK6evs6oSg==
-----END PUBLIC KEY-----

Installer

The curl | sh installer for this tag has sha256 6ea6975ceee97e822253c61b03b79755e79898bde94b9835fb5b9e1fe8e55085.
To check what get.nerdit.ai served you:

curl -fsSL https://get.nerdit.ai -o install.sh
sha256sum install.sh

Changelog

Groundwork for custom domains on a machine linked to Nerdit Cloud: a hosted
application will be able to answer on your own domain name once the hosted side
turns the feature on. Nothing changes on the machine until then; when it does,
a machine older than 0.9.1 is asked to update first.

  • Custom domains (machine half). The machine accepts a hosted request for an
    application under a domain the cloud has verified for your account, and the
    application sees that domain as its own host. Nerdit's own names, bare names,
    IP addresses and localhost are refused. GET /api/services/{name}/share
    now reports the application's current job_id.

Full history: CHANGELOG.md at tag v0.9.1 in the Nerdit source repository.

Source

Built from the public source tree at 518fd0c8d7f738aa0532d8becc9ef24b1b35ed86.
The release tag points at this commit. Build instructions are in packaging/README.md.

nerdit v0.9.0

Choose a tag to compare

@lwi00 lwi00 released this 11 Oct 15:49

Nerdit v0.9.0 — local AI PaaS node.

Install

curl -fsSL https://get.nerdit.ai | sh
nerdit link NL-XXXX-XXXX

Pin this version with NERDIT_VERSION=0.9.0.

Assets

file platform
nerdit-0.9.0-linux-x86_64.tar.gz Linux x86_64 (glibc 2.35+)
nerdit-0.9.0-linux-arm64.tar.gz Linux arm64 (glibc 2.35+)
nerdit-0.9.0-macos-arm64.tar.gz macOS arm64 (Apple silicon)

SHA256SUMS covers the three tarballs; SHA256SUMS.sig is an
ECDSA P-256 signature over it, made with the key published below and as
the asset nerdit-release.pub.pem. The installer verifies both
before extracting. To check by hand:

sha256sum -c SHA256SUMS
openssl dgst -sha256 -verify nerdit-release.pub.pem \
  -signature SHA256SUMS.sig SHA256SUMS

Release public key

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErD99ocEK39T60IgnOpitYeNoHD+V
qwskFP+Z5xTkEFhI+zNwUBr06bBcVTzBH71xc472T0ZHRrr5aK6evs6oSg==
-----END PUBLIC KEY-----

Installer

The curl | sh installer for this tag has sha256 6ea6975ceee97e822253c61b03b79755e79898bde94b9835fb5b9e1fe8e55085.
To check what get.nerdit.ai served you:

curl -fsSL https://get.nerdit.ai -o install.sh
sha256sum install.sh

Changelog

Applications can receive webhooks. If your machine is linked to Nerdit Cloud,
the hosted side has to be updated before the machine: a 0.9.0 daemon behind an
older cloud release does not accept hooks on its hosted address.

Inbound webhooks

  • Webhook URLs for an application. A provider (Stripe, GitHub, Slack, any
    sender that signs with HMAC-SHA256, or an unsigned one) can POST to a deployed
    application through its hosted address. The machine verifies the signature
    against a secret you set (NERDIT_HOOK_<NAME>_SECRET) before the application
    sees a byte, then forwards the request to the path you chose. The application
    finds its own URL in NERDIT_HOOK_<NAME>_URL.
  • Three ways to declare one. nerdit hooks list|add|rm, a [hooks.<name>]
    section in a single-app nerdit.toml (applied on every deploy), or the
    list_hooks / add_hook / remove_hook MCP tools and REST operations
    (GET/POST /api/services/{name}/hooks,
    DELETE /api/services/{name}/hooks/{hook}). The secret itself goes through
    the usual secrets commands; it is never passed on the command line.
  • A stripe-webhook template in the store: a FastAPI app that declares
    [hooks.stripe], dedupes on the Stripe event id and records it only after
    handling. Set NERDIT_HOOK_STRIPE_SECRET after the first deploy, once Stripe
    shows the signing secret; deliveries are held until then. All templates now
    track nerdit-templates v1.2.0.

Also in this release

  • Setting a shared secret now also requires an unscoped token: a submitter
    token limited to one application or project is refused, since a shared value
    reaches every application on the machine.
  • Agents and the console can ask the machine for a provider's model list
    (POST /api/ai-gateway/providers/models, MCP list_ai_provider_models) with
    a key the machine already holds, so a model can be picked before an alias is
    created. The key never leaves the machine; the answer is model ids only.

Full history: CHANGELOG.md at tag v0.9.0 in the Nerdit source repository.

Source

Built from the public source tree at 6c17834f7f6271f5509e2c6809cde88eb335c026.
The release tag points at this commit. Build instructions are in packaging/README.md.

nerdit v0.8.4

Choose a tag to compare

@lwi00 lwi00 released this 09 Oct 15:37

Nerdit v0.8.4 — local AI PaaS node.

Install

curl -fsSL https://get.nerdit.ai | sh
nerdit link NL-XXXX-XXXX

Pin this version with NERDIT_VERSION=0.8.4.

Assets

file platform
nerdit-0.8.4-linux-x86_64.tar.gz Linux x86_64 (glibc 2.35+)
nerdit-0.8.4-linux-arm64.tar.gz Linux arm64 (glibc 2.35+)
nerdit-0.8.4-macos-arm64.tar.gz macOS arm64 (Apple silicon)

SHA256SUMS covers the three tarballs; SHA256SUMS.sig is an
ECDSA P-256 signature over it, made with the key published below and as
the asset nerdit-release.pub.pem. The installer verifies both
before extracting. To check by hand:

sha256sum -c SHA256SUMS
openssl dgst -sha256 -verify nerdit-release.pub.pem \
  -signature SHA256SUMS.sig SHA256SUMS

Release public key

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErD99ocEK39T60IgnOpitYeNoHD+V
qwskFP+Z5xTkEFhI+zNwUBr06bBcVTzBH71xc472T0ZHRrr5aK6evs6oSg==
-----END PUBLIC KEY-----

Installer

The curl | sh installer for this tag has sha256 6ea6975ceee97e822253c61b03b79755e79898bde94b9835fb5b9e1fe8e55085.
To check what get.nerdit.ai served you:

curl -fsSL https://get.nerdit.ai -o install.sh
sha256sum install.sh

Changelog

  • Shared secrets from the console. Setting a machine-wide (shared) secret,
    which is where the AI gateway's provider keys live, now accepts the
    submitter role, so a hosted box's console can add a provider key. Deleting a
    shared secret still requires admin.

Full history: CHANGELOG.md at tag v0.8.4 in the Nerdit source repository.

Source

Built from the public source tree at 6c164dbd26d0027bd984efc1fdd81b66e71021f8.
The release tag points at this commit. Build instructions are in packaging/README.md.

nerdit v0.8.3

Choose a tag to compare

@lwi00 lwi00 released this 09 Oct 14:42

Nerdit v0.8.3 — local AI PaaS node.

Install

curl -fsSL https://get.nerdit.ai | sh
nerdit link NL-XXXX-XXXX

Pin this version with NERDIT_VERSION=0.8.3.

Assets

file platform
nerdit-0.8.3-linux-x86_64.tar.gz Linux x86_64 (glibc 2.35+)
nerdit-0.8.3-linux-arm64.tar.gz Linux arm64 (glibc 2.35+)
nerdit-0.8.3-macos-arm64.tar.gz macOS arm64 (Apple silicon)

SHA256SUMS covers the three tarballs; SHA256SUMS.sig is an
ECDSA P-256 signature over it, made with the key published below and as
the asset nerdit-release.pub.pem. The installer verifies both
before extracting. To check by hand:

sha256sum -c SHA256SUMS
openssl dgst -sha256 -verify nerdit-release.pub.pem \
  -signature SHA256SUMS.sig SHA256SUMS

Release public key

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErD99ocEK39T60IgnOpitYeNoHD+V
qwskFP+Z5xTkEFhI+zNwUBr06bBcVTzBH71xc472T0ZHRrr5aK6evs6oSg==
-----END PUBLIC KEY-----

Installer

The curl | sh installer for this tag has sha256 6ea6975ceee97e822253c61b03b79755e79898bde94b9835fb5b9e1fe8e55085.
To check what get.nerdit.ai served you:

curl -fsSL https://get.nerdit.ai -o install.sh
sha256sum install.sh

Changelog

The AI gateway is on by default, and a hosted box can manage its own aliases.

AI gateway

  • On by default. The gateway listens as soon as the Engine starts, on the
    Docker bridge address only, and answers 401 without a virtual key. A machine
    upgrading from 0.8.2 opens port 9330 on its bridge at the next restart; set
    [ai_gateway] enabled = false and restart to turn it off.
  • Aliases from the console or an agent. Creating and removing aliases and
    revoking an application's virtual key now accept the submitter role, which
    is what a hosted box's connection carries (a submitter revokes the keys of
    its own applications only). Changing the gateway's settings
    or turning it off still requires admin.

Full history: CHANGELOG.md at tag v0.8.3 in the Nerdit source repository.

Source

Built from the public source tree at aa2c4ccafaa94579af769971430ef2a93c63bae7.
The release tag points at this commit. Build instructions are in packaging/README.md.

nerdit v0.8.2

Choose a tag to compare

@lwi00 lwi00 released this 09 Oct 11:25

Nerdit v0.8.2 — local AI PaaS node.

Install

curl -fsSL https://get.nerdit.ai | sh
nerdit link NL-XXXX-XXXX

Pin this version with NERDIT_VERSION=0.8.2.

Assets

file platform
nerdit-0.8.2-linux-x86_64.tar.gz Linux x86_64 (glibc 2.35+)
nerdit-0.8.2-linux-arm64.tar.gz Linux arm64 (glibc 2.35+)
nerdit-0.8.2-macos-arm64.tar.gz macOS arm64 (Apple silicon)

SHA256SUMS covers the three tarballs; SHA256SUMS.sig is an
ECDSA P-256 signature over it, made with the key published below and as
the asset nerdit-release.pub.pem. The installer verifies both
before extracting. To check by hand:

sha256sum -c SHA256SUMS
openssl dgst -sha256 -verify nerdit-release.pub.pem \
  -signature SHA256SUMS.sig SHA256SUMS

Release public key

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErD99ocEK39T60IgnOpitYeNoHD+V
qwskFP+Z5xTkEFhI+zNwUBr06bBcVTzBH71xc472T0ZHRrr5aK6evs6oSg==
-----END PUBLIC KEY-----

Installer

The curl | sh installer for this tag has sha256 6ea6975ceee97e822253c61b03b79755e79898bde94b9835fb5b9e1fe8e55085.
To check what get.nerdit.ai served you:

curl -fsSL https://get.nerdit.ai -o install.sh
sha256sum install.sh

Changelog

Applications can talk to AI providers through the machine's own gateway, and a
Git deployment can join an existing project.

AI gateway (off by default)

  • One endpoint per machine. With [ai_gateway] enabled = true in
    config.toml, the Engine serves an OpenAI-compatible endpoint on the Docker
    bridge (port 9330 by default). Applications bind to it with
    provider = "gateway" and a model alias such as fast; the binding
    injects the same variables as the other providers (OPENAI_BASE_URL,
    OPENAI_API_KEY and OPENAI_MODEL for [ai.default],
    NERDIT_AI_<NAME>_URL/_KEY/_MODEL for a named binding), so application
    code does not change.
  • Provider keys stay on the machine. An alias maps to a provider model, a
    base URL and a reference to a shared secret. Containers only ever receive a
    per-application virtual key, re-minted on every launch and revocable with
    nerdit ai keys revoke APP. An alias can also point at a model this machine
    serves with Ollama.
  • Usage per application. nerdit ai usage reports requests, prompt and
    completion tokens and upstream errors per application, alias and day;
    streamed answers are counted too.
  • Control surface. nerdit ai routes list|set|rm, nerdit ai keys,
    nerdit ai usage; /api/ai-gateway/*; MCP tools list_ai_routes,
    set_ai_route, remove_ai_route, get_ai_usage; capability
    ai_gateway_v1. If the gateway is off, could not start, or an alias is
    missing, the application waits and its logs say why.

Deploy

  • Add a service to an existing project. POST /api/deploy/git and the
    store deploy take project and service together; the service is created
    in the project's production environment and redeploys like any Git-sourced
    application. Capability deploy_into_project_v1.

Fixes

  • Dashboard opened from Nerdit Cloud. It no longer asks for a local token
    when the console session already authenticates it, and it recovers an
    expired session in place instead of signing you out.
  • Hardening from review. A deploy joining a project re-checks its seat
    after the clone, so two concurrent joins cannot overwrite each other; a
    gateway alias URL must be printable; usage counters are bounded so an
    out-of-range provider value cannot fail a request or the usage report.

Full history: CHANGELOG.md at tag v0.8.2 in the Nerdit source repository.

Source

Built from the public source tree at e08eebe93213711e5c52a818e3d86fb03aadc176.
The release tag points at this commit. Build instructions are in packaging/README.md.

nerdit v0.8.1

Choose a tag to compare

@lwi00 lwi00 released this 04 Oct 19:27

Nerdit v0.8.1 — local AI PaaS node.

Install

curl -fsSL https://get.nerdit.ai | sh
nerdit link NL-XXXX-XXXX

Pin this version with NERDIT_VERSION=0.8.1.

Assets

file platform
nerdit-0.8.1-linux-x86_64.tar.gz Linux x86_64 (glibc 2.35+)
nerdit-0.8.1-linux-arm64.tar.gz Linux arm64 (glibc 2.35+)
nerdit-0.8.1-macos-arm64.tar.gz macOS arm64 (Apple silicon)

SHA256SUMS covers the three tarballs; SHA256SUMS.sig is an
ECDSA P-256 signature over it, made with the key published below and as
the asset nerdit-release.pub.pem. The installer verifies both
before extracting. To check by hand:

sha256sum -c SHA256SUMS
openssl dgst -sha256 -verify nerdit-release.pub.pem \
  -signature SHA256SUMS.sig SHA256SUMS

Release public key

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErD99ocEK39T60IgnOpitYeNoHD+V
qwskFP+Z5xTkEFhI+zNwUBr06bBcVTzBH71xc472T0ZHRrr5aK6evs6oSg==
-----END PUBLIC KEY-----

Installer

The curl | sh installer for this tag has sha256 6ea6975ceee97e822253c61b03b79755e79898bde94b9835fb5b9e1fe8e55085.
To check what get.nerdit.ai served you:

curl -fsSL https://get.nerdit.ai -o install.sh
sha256sum install.sh

Changelog

A VM template can be moved to a new version without rebuilding it.

Install

  • Reinstall on a sealed template. install.sh --template --version x.y.z
    now runs on a template that was sealed and never started, so the image keeps
    its identity across versions. It is refused when the template was started,
    holds machine state, or carries a unit or drop-in the installer did not
    write. A plain update of a sealed template is still refused.

Fixes

  • Locked apps in the routes table. When the proxy's live table cannot be
    read, or the proxy is off, a hosted-only app shows hosted only (live state unknown) instead of reporting a read failure.

Full history: CHANGELOG.md at tag v0.8.1 in the Nerdit source repository.

Source

Built from the public source tree at 3fb38a4e01f8cab4f6a928fb17454851b9a2a008.
The release tag points at this commit. Build instructions are in packaging/README.md.

nerdit v0.8.0

Choose a tag to compare

@lwi00 lwi00 released this 03 Oct 09:01

Nerdit v0.8.0 — local AI PaaS node.

Install

curl -fsSL https://get.nerdit.ai | sh
nerdit link NL-XXXX-XXXX

Pin this version with NERDIT_VERSION=0.8.0.

Assets

file platform
nerdit-0.8.0-linux-x86_64.tar.gz Linux x86_64 (glibc 2.35+)
nerdit-0.8.0-linux-arm64.tar.gz Linux arm64 (glibc 2.35+)
nerdit-0.8.0-macos-arm64.tar.gz macOS arm64 (Apple silicon)

SHA256SUMS covers the three tarballs; SHA256SUMS.sig is an
ECDSA P-256 signature over it, made with the key published below and as
the asset nerdit-release.pub.pem. The installer verifies both
before extracting. To check by hand:

sha256sum -c SHA256SUMS
openssl dgst -sha256 -verify nerdit-release.pub.pem \
  -signature SHA256SUMS.sig SHA256SUMS

Release public key

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErD99ocEK39T60IgnOpitYeNoHD+V
qwskFP+Z5xTkEFhI+zNwUBr06bBcVTzBH71xc472T0ZHRrr5aK6evs6oSg==
-----END PUBLIC KEY-----

Installer

The curl | sh installer for this tag has sha256 7dfb09f68dee378529ab54e39f72f96d11691cc24fea357226ce1891c95195fd.
To check what get.nerdit.ai served you:

curl -fsSL https://get.nerdit.ai -o install.sh
sha256sum install.sh

Changelog

A shared app can be locked to its hosted link, and managed databases and
models come back after a reboot.

Sharing

  • Hosted-only apps. nerdit share <app> --hosted-only keeps an app
    reachable through its hosted link only: this machine's proxy stops serving
    it on the local network, and keeps it that way across restarts and
    redeploys. nerdit share <app> --local-route brings the local address back
    within a few seconds, and so does nerdit unshare <app> when the machine is
    offline. nerdit share <app> --show says whether a local route is still
    there. The lock is refused while a domain is bound to the app, and on a
    machine whose API can be reached from the network without a token. Agents
    get the same switch through the share_service tool, and the dashboard
    shows a "Hosted only" badge. A machine downgraded to an older version
    serves the app locally again until it is updated.

Fixes

  • Databases and models survive a reboot. A host shutdown stops their
    container cleanly, and the machine used to leave them stopped on the next
    boot. They now restart whatever the exit code. Apps are unchanged: with the
    default always policy an app restarts too, and only an app deployed with
    on-failure or no stays stopped after a clean exit. A database already
    left stopped by an earlier version comes back with
    nerdit services restart <name>, with its data.

Docs

  • A fresh install turns the HTTPS proxy and mDNS on, on port 8443; the
    installation and proxy guides said otherwise.

Full history: CHANGELOG.md at tag v0.8.0 in the Nerdit source repository.

Source

Built from the public source tree at c049f3bf1fb42adb422dfbfb3db0341e863e6c4e.
The release tag points at this commit. Build instructions are in packaging/README.md.

nerdit v0.7.2

Choose a tag to compare

@lwi00 lwi00 released this 02 Oct 15:37

Nerdit v0.7.2 — local AI PaaS node.

Install

curl -fsSL https://get.nerdit.ai | sh
nerdit link NL-XXXX-XXXX

Pin this version with NERDIT_VERSION=0.7.2.

Assets

file platform
nerdit-0.7.2-linux-x86_64.tar.gz Linux x86_64 (glibc 2.35+)
nerdit-0.7.2-linux-arm64.tar.gz Linux arm64 (glibc 2.35+)
nerdit-0.7.2-macos-arm64.tar.gz macOS arm64 (Apple silicon)

SHA256SUMS covers the three tarballs; SHA256SUMS.sig is an
ECDSA P-256 signature over it, made with the key published below and as
the asset nerdit-release.pub.pem. The installer verifies both
before extracting. To check by hand:

sha256sum -c SHA256SUMS
openssl dgst -sha256 -verify nerdit-release.pub.pem \
  -signature SHA256SUMS.sig SHA256SUMS

Release public key

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErD99ocEK39T60IgnOpitYeNoHD+V
qwskFP+Z5xTkEFhI+zNwUBr06bBcVTzBH71xc472T0ZHRrr5aK6evs6oSg==
-----END PUBLIC KEY-----

Installer

The curl | sh installer for this tag has sha256 7dfb09f68dee378529ab54e39f72f96d11691cc24fea357226ce1891c95195fd.
To check what get.nerdit.ai served you:

curl -fsSL https://get.nerdit.ai -o install.sh
sha256sum install.sh

Changelog

VM templates close their own ports, and the texts say who can open a private
share.

Installation

  • VM templates close their own ports. A template built with
    install.sh --template now blocks connections from outside the machine to
    Nerdit's HTTPS port (8443) and API port (9321), over TCP and UDP (HTTP/3),
    IPv4 and IPv6, through the host's ufw firewall at every start. Apps stay
    reachable through their hosted links, and containers still reach databases
    and models. Machines cloned from an older template are unchanged until they
    are recreated from a new one. The rule needs ufw to be active, so check from
    outside the machine that both ports are closed, over TCP and UDP.
    nerdit uninstall removes the template's new unit drop-in, but the firewall
    rules it already added stay: on a machine that keeps running, remove them
    with ufw delete deny proto tcp to any port 8443,9321 and the same command
    with udp.

Docs and help text

  • Who can open a private share. The nerdit share --public help, the
    dashboard's share card, the share_service MCP tool description, the API
    field descriptions and the README now describe a private hosted share as
    open to the owner of the machine's Nerdit account and the people they allow
    in the Nerdit App, where they used to say the machine's owners only. Nothing
    changes in behaviour on the machine: no command, option, API field or
    default changed, and who may come in is decided in the Nerdit App.

Full history: CHANGELOG.md at tag v0.7.2 in the Nerdit source repository.

Source

Built from the public source tree at a5ca552cd993b9416d26deab8b39ddd48e0c830c.
The release tag points at this commit. Build instructions are in packaging/README.md.

nerdit v0.7.1

Choose a tag to compare

@lwi00 lwi00 released this 01 Oct 14:34

Nerdit v0.7.1 — local AI PaaS node.

Install

curl -fsSL https://get.nerdit.ai | sh
nerdit link NL-XXXX-XXXX

Pin this version with NERDIT_VERSION=0.7.1.

Assets

file platform
nerdit-0.7.1-linux-x86_64.tar.gz Linux x86_64 (glibc 2.35+)
nerdit-0.7.1-linux-arm64.tar.gz Linux arm64 (glibc 2.35+)
nerdit-0.7.1-macos-arm64.tar.gz macOS arm64 (Apple silicon)

SHA256SUMS covers the three tarballs; SHA256SUMS.sig is an
ECDSA P-256 signature over it, made with the key published below and as
the asset nerdit-release.pub.pem. The installer verifies both
before extracting. To check by hand:

sha256sum -c SHA256SUMS
openssl dgst -sha256 -verify nerdit-release.pub.pem \
  -signature SHA256SUMS.sig SHA256SUMS

Release public key

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErD99ocEK39T60IgnOpitYeNoHD+V
qwskFP+Z5xTkEFhI+zNwUBr06bBcVTzBH71xc472T0ZHRrr5aK6evs6oSg==
-----END PUBLIC KEY-----

Installer

The curl | sh installer for this tag has sha256 6d6a9b667fcda90d3637398e998539cd98a70df148da03bc27a0ae5a211141cd.
To check what get.nerdit.ai served you:

curl -fsSL https://get.nerdit.ai -o install.sh
sha256sum install.sh

Changelog

Reliability fixes for waits, logs and VM templates.

Fixes

  • Waiting after a stop. nerdit services wait, wait_for_service and
    GET /services/{name}/wait now wait for a requested stop: after
    stop_service they converge once the service is actually stopped. A wait
    for an explicit version (deploy --wait) keeps that version as its target,
    so a concurrent stop does not read as the deploy succeeding.
  • Fewer lost log lines across a daemon restart. The re-adopted log follow
    rewinds 10 seconds and skips the lines already stored, so lines emitted just
    before the restart are kept. A reader more than 10 seconds behind can still
    lose its unread backlog.
  • Filtered log reads return a cursor to delegated callers. A forward read
    with grep or since now returns X-Nerdit-Scan-Watermark to
    project-delegated callers too, so a follower with no match does not rescan
    the same history. As before, a full page omits it: continue from its last
    row ID until a shorter page returns the watermark.

Agents and API

  • Every deploy response that creates or updates a service (not a
    ?dry_run=true plan) carries the service's project, project_id and
    service, like GET /services. POST /projects/{project}/apply returns
    the project's project_id (null on a dry run that would create it).

Installation

  • VM templates. install.sh --template (or NERDIT_TEMPLATE=1) builds a
    fork-safe image: it installs the root service, proves /health, then
    disables it and removes every per-machine file, so each clone mints its own
    identity and admin token. Clones must cold-boot, or expose VMGenID; otherwise
    reboot a clone before its first start. On each clone, run
    systemctl enable --now nerdit.service, wait for /health, then run the
    link command the installer printed: it sets the unit user and its HOME. On
    hosts whose firewall denies incoming traffic by default, the template
    re-allows container traffic on the Docker bridge at each start.
    nerdit uninstall removes the template's unit drop-ins.
  • The GPU dependency is nvidia-ml-py instead of the deprecated pynvml
    wrapper, which printed a FutureWarning on every Python start.
  • The wheel ships only the built dashboard, about 1 MB smaller, and CLI
    commands start about 150 ms faster.

Full history: CHANGELOG.md at tag v0.7.1 in the Nerdit source repository.

Source

Built from the public source tree at 0ec7ca239bad2564a0b843843d13bedfa720f92c.
The release tag points at this commit. Build instructions are in packaging/README.md.

nerdit v0.7.0

Choose a tag to compare

@lwi00 lwi00 released this 25 Sep 12:44

Nerdit v0.7.0 — local AI PaaS node.

Install

curl -fsSL https://get.nerdit.ai | sh
nerdit link NL-XXXX-XXXX

Pin this version with NERDIT_VERSION=0.7.0.

Assets

file platform
nerdit-0.7.0-linux-x86_64.tar.gz Linux x86_64 (glibc 2.35+)
nerdit-0.7.0-linux-arm64.tar.gz Linux arm64 (glibc 2.35+)
nerdit-0.7.0-macos-arm64.tar.gz macOS arm64 (Apple silicon)

SHA256SUMS covers the three tarballs; SHA256SUMS.sig is an
ECDSA P-256 signature over it, made with the key published below and as
the asset nerdit-release.pub.pem. The installer verifies both
before extracting. To check by hand:

sha256sum -c SHA256SUMS
openssl dgst -sha256 -verify nerdit-release.pub.pem \
  -signature SHA256SUMS.sig SHA256SUMS

Release public key

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErD99ocEK39T60IgnOpitYeNoHD+V
qwskFP+Z5xTkEFhI+zNwUBr06bBcVTzBH71xc472T0ZHRrr5aK6evs6oSg==
-----END PUBLIC KEY-----

Installer

The curl | sh installer for this tag has sha256 b170da1a39ad0384e86d53864127299cddba06aa2c10aeb868eeee49d36cb0bc.
To check what get.nerdit.ai served you:

curl -fsSL https://get.nerdit.ai -o install.sh
sha256sum install.sh

Changelog

MCP in every installation, stable project IDs for agents, and a hardening pass
that closes token-less LAN access. Read "Before upgrading": some changes can
break existing setups.

Agents and MCP

  • MCP is included in every installation. pip install nerdit now ships the
    MCP server alongside the prebuilt dashboard and mDNS, so nerdit mcp works
    with no extra. nerdit[mcp] still installs. HTTP MCP still needs explicit
    configuration (or linking) and a daemon authentication token.
  • Project logs and diagnosis. The new MCP tools project_logs and
    diagnose_project take a project and a service (web by default), so an agent
    no longer needs to look up the service's internal name first.
  • Address projects by stable ID. Project reads, apply and variable operations,
    over REST and MCP, accept the immutable prj_… ID as well as the name. The ID
    keeps pointing at the same project when its display name changes. A deleted ID
    is refused, even if a new project reuses the name.

Projects

  • Rename a project's display label with nerdit projects rename <project-id> <name>. Duplicate labels are allowed. The original namespace, service names,
    public slugs and granted access don't change.
  • Project-scoped tokens can manage service-scope variables on the services
    inside their project. /secrets/{service} stays label-only.
  • A Git project apply clones the repository once and builds every service from
    that same commit.
  • Delegated access from Nerdit Cloud. A Cloud assistant connection can be
    approved for a single project instead of the whole machine. It can then read
    the project, its logs and diagnosis, and write variables, but can't deploy.
    Deploying needs machine access. Cloud forwards variable values to the daemon
    without storing them or reading them back. Older daemons refuse project-only
    access instead of treating it as machine access.

Security and reliability

  • New [containers].pids_limit (default 4096) caps the processes and threads of
    every service, run, model and database container.
  • Webhook deliveries add X-Nerdit-Timestamp and a replay-resistant
    X-Nerdit-Signature-V2, an HMAC over <timestamp>.<delivery>.<body>.
    X-Nerdit-Signature is unchanged. Targets now drain concurrently, so a dead
    endpoint no longer delays the others.
  • POST /api/deploy and POST /api/projects/{project}/apply require a
    Content-Length, so a chunked upload gets 411 length_required. Both are
    bounded at [daemon].max_upload_bytes + 1 MiB before parsing
    (413 payload_too_large).
  • Failed authentications (a missing, invalid or stale bearer token) are audited
    as auth.denied. Filter them with GET /api/audit?action_prefix=auth. An
    X-Request-Id outside [A-Za-z0-9._:-]{1,128} is replaced by a new ID
    instead of being echoed.
  • nerdit connect can read the token from a hidden prompt or one line of stdin,
    which keeps it off argv (--token is still accepted). It warns when a
    non-loopback host uses plain HTTP. connect and nerdit init write
    ~/.nerdit/config.toml atomically with mode 0600.
  • nerdit link nk_… with a positional key exits 2 and points to --key-stdin:
    a pre-auth key never goes on argv.
  • Deleting a service with purge=data no longer removes the data of a same-name
    service created after the delete committed. The response reports
    purged.data: false.
  • The workspace cleanup no longer removes a project's workspace.
  • Under [proxy].dashboard_apex in path mode, new services named api or
    assets are refused (422 service.reserved_name), and nerdit doctor warns
    about existing ones.

Before upgrading

  • Token-less LAN access is refused. A daemon without [daemon].auth_token
    now answers non-public requests only when the Host is localhost or a
    loopback IP. Other hosts get 421 invalid_host. If you reach a token-less
    daemon from another machine (a 0.0.0.0 bind, or a token-less
    dashboard_apex), configure a token first. Public paths (/health,
    /api/proxy/ca, the dashboard shell, /assets) stay reachable. Daemons with
    a token behave as before.
  • .env files are no longer uploaded. nerdit deploy, apply, dev and
    the MCP deploy tool skip .env* files and symlinks that resolve outside the
    app folder. If an image relied on a baked-in .env, move those values to
    nerdit secrets set or nerdit vars set.
  • Git redirects are no longer followed. Clones and push-to-deploy polling
    fail with 400 deploy.git_clone_failed for a renamed or moved repository.
    Redeploy it with its new URL. A repo_url containing whitespace or control
    characters gets 422 deploy.git_url_invalid, including on redeploys of an
    existing source.
  • Containers get a 4096-task cap on the first restart after the upgrade.
    Raise [containers].pids_limit if a workload needs more. The default memory
    limit is unchanged.
  • Adding Cloud destinations or changing an assistant's approved scope
    invalidates earlier OAuth credentials: reconnect the assistant.

Full history: CHANGELOG.md at tag v0.7.0 in the Nerdit source repository.

Source

Built from the public source tree at 332cff99d558edf77b0246a5428825ee958d6405.
The release tag points at this commit. Build instructions are in packaging/README.md.