Repository navigation
Releases: nerdit-ai/nerdit
Release list
nerdit v0.9.1
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 andlocalhostare refused.GET /api/services/{name}/share
now reports the application's currentjob_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
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 inNERDIT_HOOK_<NAME>_URL. - Three ways to declare one.
nerdit hooks list|add|rm, a[hooks.<name>]
section in a single-appnerdit.toml(applied on every deploy), or the
list_hooks/add_hook/remove_hookMCP 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-webhooktemplate in the store: a FastAPI app that declares
[hooks.stripe], dedupes on the Stripe event id and records it only after
handling. SetNERDIT_HOOK_STRIPE_SECRETafter the first deploy, once Stripe
shows the signing secret; deliveries are held until then. All templates now
tracknerdit-templatesv1.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, MCPlist_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
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
submitterrole, so a hosted box's console can add a provider key. Deleting a
shared secret still requiresadmin.
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
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 = falseand 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 thesubmitterrole, 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 requiresadmin.
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
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 = truein
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 asfast; the binding
injects the same variables as the other providers (OPENAI_BASE_URL,
OPENAI_API_KEYandOPENAI_MODELfor[ai.default],
NERDIT_AI_<NAME>_URL/_KEY/_MODELfor 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 usagereports 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 toolslist_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/gitand the
store deploy takeprojectandservicetogether; the service is created
in the project'sproductionenvironment and redeploys like any Git-sourced
application. Capabilitydeploy_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
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 showshosted 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
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-onlykeeps 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-routebrings the local address back
within a few seconds, and so doesnerdit unshare <app>when the machine is
offline.nerdit share <app> --showsays 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 theshare_servicetool, 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
defaultalwayspolicy an app restarts too, and only an app deployed with
on-failureornostays 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
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 --templatenow 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 uninstallremoves the template's new unit drop-in, but the firewall
rules it already added stay: on a machine that keeps running, remove them
withufw delete deny proto tcp to any port 8443,9321and the same command
withudp.
Docs and help text
- Who can open a private share. The
nerdit share --publichelp, the
dashboard's share card, theshare_serviceMCP 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
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_serviceand
GET /services/{name}/waitnow wait for a requested stop: after
stop_servicethey 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
withgreporsincenow returnsX-Nerdit-Scan-Watermarkto
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=trueplan) carries the service'sproject,project_idand
service, likeGET /services.POST /projects/{project}/applyreturns
the project'sproject_id(nullon a dry run that would create it).
Installation
- VM templates.
install.sh --template(orNERDIT_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 itsHOME. On
hosts whose firewall denies incoming traffic by default, the template
re-allows container traffic on the Docker bridge at each start.
nerdit uninstallremoves the template's unit drop-ins. - The GPU dependency is
nvidia-ml-pyinstead of the deprecatedpynvml
wrapper, which printed aFutureWarningon 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
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 nerditnow ships the
MCP server alongside the prebuilt dashboard and mDNS, sonerdit mcpworks
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_logsand
diagnose_projecttake a project and a service (webby 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 immutableprj_…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-Timestampand a replay-resistant
X-Nerdit-Signature-V2, an HMAC over<timestamp>.<delivery>.<body>.
X-Nerdit-Signatureis unchanged. Targets now drain concurrently, so a dead
endpoint no longer delays the others. POST /api/deployandPOST /api/projects/{project}/applyrequire a
Content-Length, so a chunked upload gets411 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
asauth.denied. Filter them withGET /api/audit?action_prefix=auth. An
X-Request-Idoutside[A-Za-z0-9._:-]{1,128}is replaced by a new ID
instead of being echoed. nerdit connectcan read the token from a hidden prompt or one line of stdin,
which keeps it off argv (--tokenis still accepted). It warns when a
non-loopback host uses plain HTTP.connectandnerdit initwrite
~/.nerdit/config.tomlatomically 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=datano 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_apexin path mode, new services namedapior
assetsare refused (422 service.reserved_name), andnerdit doctorwarns
about existing ones.
Before upgrading
- Token-less LAN access is refused. A daemon without
[daemon].auth_token
now answers non-public requests only when theHostislocalhostor a
loopback IP. Other hosts get421 invalid_host. If you reach a token-less
daemon from another machine (a0.0.0.0bind, 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. .envfiles are no longer uploaded.nerdit deploy,apply,devand
the MCPdeploytool 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 setornerdit vars set.- Git redirects are no longer followed. Clones and push-to-deploy polling
fail with400 deploy.git_clone_failedfor a renamed or moved repository.
Redeploy it with its new URL. Arepo_urlcontaining whitespace or control
characters gets422 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_limitif 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.