- Jun 23, 2026
-
-
Stefy Lanza (nextime / spora ) authored
`docker load -i` shows no useful progress and the installer captured its output into a variable, so a ~12G load looked like a multi-minute hang. Stream the tarball through a meter into `docker load` instead — the file read tracks load progress closely. Prefer `pv` (bar + ETA), fall back to GNU `dd status=progress` (bytes + throughput), else plain load with a tip to install pv. The meter draws on stderr so the "Loaded image:" line is still captured. Pre-authenticate sudo first so its prompt doesn't collide with the bar. Co-Authored-By:
Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RdMufYvtTbtGDWsiZVoXce
-
Stefy Lanza (nextime / spora ) authored
Three operational fixes for the distributable image: run_oci.sh: default the container to the invoking user (uid:gid, SUDO_UID-aware) instead of the image's root default, with a new --root opt-out. The image has no USER directive and supervisord sets no user=, so a run without --user created root-owned dirs (logs, coderai-tmp, hf cache) in the bind-mounted /cache; a later --user run then couldn't write them ("cannot write /cache/logs ... logging to stdout only"). Running as the user by default makes a fresh install safe regardless of run order. --root restores the old behaviour (and throwaway config copy) for shared root-managed data dirs. nginx.conf: error_log crit (was info) + access_log off. nginx's [notice] startup/worker lines and per-request access logs were piped to the container console by supervisord and buried coderai's own output on attach / docker logs. Real failures (crit/alert/emerg) still surface. install.sh: print an extensive post-install guide (quick start, --local + --map, where data lives, the run-as-you default, file logging, docker logs/stop, --help). Co-Authored-By:Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RdMufYvtTbtGDWsiZVoXce
-
- Jun 21, 2026
-
-
Stefy Lanza (nextime / spora ) authored
launcher: image auto-resolution, --user in-place config persistence, --debug SPEC, install/uninstall image handling run_oci.sh: - Resolve the installed coderai image when none is given (single -> use it, several -> menu); no longer hardcodes a possibly-wrong tag. - --debug accepts SPEC as the next token (not just --debug=SPEC) and won't swallow an image-looking arg, fixing "image: <debug spec>" mishaps. - --local puts the runtime dir under ~/.config/coderai-runtime (override --data-dir). - New --user[=UID[:GID]]: run as that user and switch a config dir to an IN-PLACE mount so the app's config edits persist (owned by you). Without --user, --local/--config-dir stay a throwaway copy. Banner shows user. Non-destructive config persistence (no startup rewrite): - codai/cli.py: new --host/--port that override config.server in memory only. - codai/main.py: apply those overrides right after config load (never written to config.json). - coderai-oci: pass --host/--port to the server and stop rewriting an existing config.json (only create one on true first run) — so an in-place-mounted config dir is never modified at startup. install.sh / uninstall.sh: - install: after loading, offer to remove OTHER coderai images (default no); no auto-launch. - uninstall: resolve the installed coderai image(s) to remove (single -> confirm, several -> menu / all / none) instead of a hardcoded tag. Co-Authored-By:Claude Opus 4.8 <noreply@anthropic.com>
-
Stefy Lanza (nextime / spora ) authored
coderai-oci (in-image): append ${CODERAI_EXTRA_ARGS} to the server argv in both exec paths. supervisord runs a fixed command, so arbitrary server flags arrive via this env var rather than argv. (Takes effect after an image rebuild.) run_oci.sh: --coderai-arg ARG (repeatable, one token each) and --coderai-args "STR" build CODERAI_EXTRA_ARGS and inject it with -e; new cdr-args banner line. `--` still goes to the container engine, not coderai. Docs (AI.PROMPT, dist-bundle README.md/.txt) updated accordingly. Co-Authored-By:Claude Opus 4.8 <noreply@anthropic.com>
-
Stefy Lanza (nextime / spora ) authored
build_oci_image.sh: - --versioned derives a deterministic tag from codai.__version__ + build mode + GPU: local-venv -> coderai:full_<gpu>_<version>, from-scratch -> coderai:base_<gpu>_<version> (overrides -t/--tag). - --gpu all|nvidia|vulkan (default all) sets the <gpu> token; label only — the image always bundles both CUDA and Vulkan. run_oci.sh: - --host ADDR binds the published port to a specific interface (-p ADDR:PORT:8776); default unchanged (all interfaces). CODERAI_HOST stays 0.0.0.0 in-container. Banner URL reflects the bind host. Docs (AI.PROMPT, dist-bundle README.md/.txt, README-RUN.txt): - Document --versioned/--gpu, additive --nvidia/--vulkan/--all, --vulkan auto-libcuda + --with-libcuda, graceful llama-cpp degradation, --host, and the new uninstall.sh + confirm gates. Co-Authored-By:Claude Opus 4.8 <noreply@anthropic.com>
-
Stefy Lanza (nextime / spora ) authored
docker/backend: graceful llama-cpp load + additive GPU modes + libcuda mapping; admin GGUF batch/slots tuning Backend robustness: - vulkan.py catches Exception (not just ImportError) around the llama_cpp import: a CUDA-built llama-cpp missing libcuda.so.1 raised RuntimeError/OSError that crash-looped the whole server. Now it logs a warning and marks the Vulkan/GGUF backend unavailable; CUDA/CPU/ds4 keep working. - detect_available_backends() reads LLAMA_CPP_AVAILABLE instead of re-importing (which re-raised the same error). Docker launcher (run_oci.sh): - GPU backends are now additive: --nvidia --vulkan enables both (maps libcuda via --gpus all AND /dev/dri). Added --all and --with-libcuda[=PATH]. - --vulkan auto bind-mounts the host's libcuda.so.1 (the bundled llama-cpp is a CUDA build), so Vulkan GGUF loads without full --gpus all. Banner shows mode set and libcuda status. Dist bundle: - New uninstall.sh (removes runner + optional image), wired into make_dist_bundle. - install.sh + unins...
-
- Jun 20, 2026
-
-
Stefy Lanza (nextime / spora ) authored
Add a GitHub-flavored README.md alongside the existing README.txt in the all-in-one docker distribution bundle, and have make_dist_bundle.sh stage it so future builds include both. Co-Authored-By:Claude Opus 4.8 <noreply@anthropic.com>
-
- Jun 19, 2026
-
-
Stefy Lanza (nextime / spora ) authored
The image's demo tool UIs (video editor :8420, videogen :7790, township :7788, parler TTS :8123) are now individually toggleable at container start — no rebuild. supervisord.conf drives each program's autostart from a CODERAI_TOOL_* env var; the entrypoint seeds defaults (three UIs on, parler off) so the %(ENV_...)s expansion always resolves. run_oci.sh (shipped as the dist coderai-docker runner) gains: --no-tools disable all three demo UIs --enable-tool NAME force-enable one (also turns on parler) --disable-tool NAME disable one; explicit toggles override --no-tools NAME ∈ {video-editor, videogen, township, parler}. README + --help updated. Co-Authored-By:Claude Opus 4.8 <noreply@anthropic.com>
-
Stefy Lanza (nextime / spora ) authored
- make_dist_bundle.sh: assemble dist/coderai-docker-dist.tar containing the image tarball (docker save | pigz), the coderai-docker runner (run_oci.sh, image tag pinned), install.sh and README. Stages under dist/ (not tiny /tmp) and hardlinks the multi-GB image tarball instead of copying it. - dist-bundle/install.sh: docker-load the image (sudo-fallback for daemon access) then install the coderai-docker runner to /usr/local/bin (root) or ~/.local/usr/bin (user, added to ~/.bashrc PATH if missing). - build_oci_image.sh: after a successful build, export + bundle for distribution by default (--no-dist to skip). - run_oci.sh: default image tag -> coderai:dist (matches what's shipped/loaded). Co-Authored-By:Claude Opus 4.8 <noreply@anthropic.com>
-