Copyright (C) 2026 Doan Luu Duc Tai This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . STACK Four services: Caddy, cgit, SearXNG, Rust private chat. Rust management CLI; strict TypeScript browser code; GNU LibreJS checks. SearXNG and cgit's upstream supervisor use third-party Python. No first-party Python. License: GNU Affero General Public License, version 3 or later. See LICENSE. START LOCAL Linux tools: rustup, Podman, Git, GnuPG, Node >=22.18.0, npm. Native chat checks: GCC-compatible C compiler, Linux UAPI headers, libclang, pkg-config, make, Perl, curl, tar, OpenSSL >=3.5 development libraries. Pinned Rust includes rustfmt, Clippy, static x86_64 Linux target. Native/WASI release builds: docs/CHAT-PRODUCTION.txt. cargo stack dev cargo stack status cargo stack down Open http://localhost:8080, /git/, /search/, http://chat.localhost:8080/. Fresh checkout creates private .env. Local mode: loopback only, no public TLS. FILES AND STATE Full file tree and uses: docs/MAP.txt. Rules: docs/POLICY.txt. CLI: src/main.rs, src/app.rs, src/app/. Backends: crates/. Add crates explicitly to root workspace; inherit strict workspace lints. infra/: services, proxy, containers, user service. web/: site and WKD. docs/: .txt guides. Browser code/tests: TypeScript; docs/TYPESCRIPT.txt. Exactly one root .env: settings and configured secrets. One public .env.example: hosts, ports, upstreams, chat, backup keys/placeholders. Generated databases and TLS keys: var/data. More: docs/CONFIGURATION.txt. Git ignores .env, var/, .tools/, target/, bin/, dist/, node_modules/. CHECK AND RELEASE cargo install --locked --version 0.20.2 cargo-deny --root .tools cargo install --locked --version 0.9.3 --features cli cargo-about --root .tools cargo stack check cargo stack release Check: TypeScript build, both compilers, typed ESLint, npm audit; Rust fmt, Clippy, tests, private rustdoc, cargo-deny, cargo-about. npm lock: package-lock.json. Policy and tested exceptions: docs/LINTING.txt. Cargo.lock + about.hbs generate THIRD-PARTY-LICENSES.html. Display GNU license names; preserve exact SPDX identifiers and upstream legal text. Build/test locally. Deploy prebuilt archives. VPS needs Podman, Git, GnuPG; no Rust/Cargo/Node/npm/TypeScript. Backup, restore, host setup, deployment: docs/OPERATIONS.txt. Building a release does not activate production. CHAT — EXPERIMENTAL cargo stack chat --init cargo stack chat --init adds settings to existing root .env; chat starts direct local service. Setup, protected files, tests, recovery, licensing, limits: docs/CHAT-APPLICATION.txt. Packaged HTTPS, owner setup, recovery: docs/CHAT-PRODUCTION.txt. SQLite snapshots use bundled SQLite C library. Static releases use OpenSSL, hash-verified musl headers, Rust musl target. VPS needs no compiler.