Repository navigation
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.