Skip to content

omega13-engr/conjet

Repository files navigation

Super Sonic Speed containers for macOS developers.

Conjet is an open-source, Docker-friendly container runtime for macOS. It is designed to make local container development feel fast, simple, and natural.

Use Conjet when you want a lightweight macOS container workflow with quick startup, responsive project loops, Compose support, and clean command-line tools.


Features

  • Fast macOS container runtime
  • Docker-compatible developer workflow
  • Compose support for local projects
  • Secure localhost Docker TCP/UDP port publishing
  • Simple profiles for separate workspaces
  • Project sync commands for local development
  • Smart storage behavior for dependency and build-heavy projects
  • Benchmark tooling for comparing Conjet, ReferenceRuntime, and Colima
  • Energy benchmark path when macOS power metrics are available
  • User-selectable energy modes: performance, balanced, and eco

Kubernetes is not supported yet. It is planned for a later iteration.


Install

Homebrew

brew tap omega13-engr/conjet https://github.com/omega13-engr/conjet.git
brew trust omega13-engr/conjet
brew install conjet

From Source

git clone https://github.com/omega13-engr/conjet.git
cd conjet
swift build
swift test

Run the CLI from source:

swift run conjet --help

Quick Start

Check your setup:

conjet doctor

Start Conjet:

conjet start

Check status:

conjet status

Restart the runtime:

conjet restart

Restart prunes runtime cache before shutdown when Conjet Core is already running.

Update the Conjet Core VM image:

conjet update

Run a container:

conjet run hello-world

Use Compose:

conjet compose up

Repair stale Docker metadata:

conjet docker repair --project my-compose-project
conjet docker repair --project my-compose-project --apply --restart

Use this when Docker lists stopped Compose containers but inspect, rm, or compose up fails with No such container. The repair command defaults to a dry run, verifies containerd has no matching object or task, and backs up stale metadata before removal.

Inspect published ports:

conjet port list
conjet port diagnose 3000/tcp
conjet network status

Conjet publishes Docker ports to localhost by default. Use conjet port list and conjet port diagnose when you need to inspect a local service.

Open a shell:

conjet shell

Stop Conjet:

conjet stop

See all commands:

conjet --help

Profiles

Profiles let you keep separate Conjet environments.

conjet --profile work start
conjet --profile work status
conjet --profile work stop

You can move Conjet state with:

export CONJET_HOME=/path/to/conjet-home

Project Workflow

Initialize a project:

conjet project init .

Attach it to Conjet:

conjet project attach .

Push source into the Conjet workspace:

conjet sync push .

Watch for changes:

conjet sync watch .

Run a command in the project:

conjet project run --path . node:22-alpine npm install

Export generated output:

conjet sync export dist --to ./exported --path .

Build

swift build
swift test

Release build:

swift build -c release

AI Agent Workflows

Project-local Claude Code and Codex CLI agents and skills live in this repo for release, runtime debugging, and macOS packaging work. See docs/ai-agents-and-skills.md.


Releases

Conjet and Conjet Core images are released separately:

  • conjet-vX.Y.Z for the CLI and daemon
  • conjet-core-vX.Y.Z for the VM image

Both release lanes use semantic versioning.


Benchmarks

Conjet includes a separate benchmark package for local comparisons.

The benchmark runner can compare:

  • Conjet
  • ReferenceRuntime
  • Colima

It reports timing, failures, topology labels, and energy data when power measurement is available. The benchmark output is comparison data, not a global performance claim.

Current benchmark positioning: Conjet can be described as faster than ReferenceRuntime on the measured warm, cold/no-cache, topology, and most cross-language local Docker workflow gates. Conjet has shown very low idle power in directional measurements, but active energy optimization is still ongoing.

Build the benchmark package:

swift build --package-path benchmarks

Run benchmark tests:

swift test --package-path benchmarks

Run the local comparison:

swift run --package-path benchmarks conjet-bench run \
  --contexts conjet,reference-runtime,colima \
  --samples 10 \
  --output-dir benchmarks/reports/run-all-local

Run only the energy benchmark:

swift run --package-path benchmarks conjet-bench energy-gate \
  --contexts conjet,reference-runtime,colima \
  --workloads idle,container-start-loop,hot-reload-loop,compose-loop,npm-install,pnpm-install,cargo-build \
  --samples 10 \
  --require-power \
  --output-dir benchmarks/reports/energy-gate-local

Energy measurements may require sudo because macOS power metrics are privileged.

Energy modes are selected on start:

conjet start --energy-mode balanced
conjet start --energy-mode performance
conjet start --energy-mode eco

balanced is the default. performance preserves the most aggressive latency posture, while eco backs off background reconciliation and persistence and can cap VM CPU allocation.

Run only the networking benchmark:

swift run --package-path benchmarks conjet-bench network-gate \
  --contexts conjet,reference-runtime,colima \
  --samples 10 \
  --output-dir benchmarks/reports/network-gate-local

Status

Conjet is under active development.

Current focus:

  • faster local container workflows
  • better project sync behavior
  • broader benchmark comparisons
  • active energy optimization
  • production-ready macOS developer experience

License

Conjet is free and open source.

About

The most lightweight, super sonic speed containerizer.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors