Skip to content
  1. Jun 23, 2026
    • Stefy Lanza (nextime / spora )'s avatar
      install.sh: show a progress bar while loading the image · 3af53d02
      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: default avatarClaude Opus 4.8 <noreply@anthropic.com>
      Claude-Session: https://claude.ai/code/session_01RdMufYvtTbtGDWsiZVoXce
      3af53d02
    • Stefy Lanza (nextime / spora )'s avatar
      packaging: run as invoking user by default, silence nginx console, richer install help · 6c87c7cd
      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: default avatarClaude Opus 4.8 <noreply@anthropic.com>
      Claude-Session: https://claude.ai/code/session_01RdMufYvtTbtGDWsiZVoXce
      6c87c7cd
  2. Jun 21, 2026
    • Stefy Lanza (nextime / spora )'s avatar
      launcher: image auto-resolution, --user in-place config persistence, --debug... · 293fb57f
      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: default avatarClaude Opus 4.8 <noreply@anthropic.com>
      293fb57f
    • Stefy Lanza (nextime / spora )'s avatar
      launcher: pass-through coderai server flags via --coderai-arg/--coderai-args · 69ff740e
      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: default avatarClaude Opus 4.8 <noreply@anthropic.com>
      69ff740e
    • Stefy Lanza (nextime / spora )'s avatar
      build/launcher: --versioned image tags, --host bind, libcuda-for-vulkan docs · d669c797
      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: default avatarClaude Opus 4.8 <noreply@anthropic.com>
      d669c797
    • Stefy Lanza (nextime / spora )'s avatar
      docker/backend: graceful llama-cpp load + additive GPU modes + libcuda... · c077b7da
      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...
      c077b7da
  3. Jun 20, 2026
  4. Jun 19, 2026
    • Stefy Lanza (nextime / spora )'s avatar
      oci: run script can enable/disable bundled demo tool web UIs · bce43398
      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: default avatarClaude Opus 4.8 <noreply@anthropic.com>
      bce43398
    • Stefy Lanza (nextime / spora )'s avatar
      packaging: build a self-contained distribution bundle by default · 7d3d8e5b
      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: default avatarClaude Opus 4.8 <noreply@anthropic.com>
      7d3d8e5b
Loading