Skip to content
This repository was archived by the owner on Feb 21, 2026. It is now read-only.

[Upstream PR #234] Docker runtime support with auto-detection #103

@Peyton-Spencer

Description

@Peyton-Spencer

Summary

Upstream PR: qwibitai#234
Author: TerrifiedBug
Status: OPEN
Changes: +221 / -73 LOC, 4 files

Adds auto-detection of Docker alongside Apple Container so NanoClaw works on Linux without source code modifications.

How It Works

  • Startup tries docker info first, then falls back to container system status
  • Once detected, all container operations (spawn, stop, build, cleanup) go through unified wrapper
  • No config flags, no env vars - just works with whatever's installed

What's Different from /convert-to-docker skill

  • Existing skill rewrites source files at setup time (violates contribution guidelines)
  • This PR supports both runtimes from same codebase
  • No source patching, no merge conflicts on upstream updates
  • Can switch between runtimes without code changes

Changes

  • src/container-runtime.ts (NEW) - Runtime detection, unified API
  • src/container-runner.ts - Uses wrapper instead of hardcoded CLI calls
  • src/index.ts - Replaces ensureContainerSystemRunning() with ensureContainerRuntime() (net -60 lines)
  • container/build.sh - Auto-detects CLI for image builds

Risk

MEDIUM

  • Changes core container abstraction
  • Author tested on Ubuntu 24.04 but not macOS
  • Needs Mac testing to verify Apple Container codepath

Recommendation

🟡 MONITOR

  • Good architectural direction (runtime abstraction)
  • Wait for Mac testing confirmation
  • Monitor for bugs after merge

OmniAura Considerations

  • We use Apple Container on LocalOmni (Mac)
  • We use Docker-based containers on Sprites (Fly.io)
  • This PR could simplify our multi-backend architecture
  • Consider adopting after proven stable

Action Items

  • Wait for upstream merge
  • Monitor for Mac testing feedback
  • Test on both LocalOmni (Apple Container) and Sprites (Docker)
  • Consider adopting if stable

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions