hack.foo
Native backend (beta)

What works and known limits

The native backend supports part of what Compose supports. When a project needs something outside that part, Hack refuses and tells you. It does not guess, and it does not fall back to Docker without telling you.

Platform

PlatformNative backend
Apple Silicon macOSSupported, through hack-next
Intel macOSNot supported. The installer refuses before changing anything.
Linux and WindowsNot supported. Use the Compose backend.
Stable hack (Homebrew or the release installer)Does not contain the native backend

Commands that work

You want toNative today
Start the whole projecthack up, in the foreground
Restart the whole projecthack restart
Stop the projecthack down, and hack down --recover after a crash
See what is runninghack ps
Read logshack logs <service> --no-follow
Run a command in a running servicehack exec, without an interactive terminal
Run a one-off commandhack run, for services without source, data or private env mounts
Preview without startinghack config validate, hack config plan, hack config import --dry-run, hack config adopt --dry-run

The exact rules for each command are in native authored commands.

Not supported yet

  • Following logs live, or querying log history with Loki.
  • Interactive exec sessions.
  • Changing the env overlay, profiles or target of a project that is already running. Stop it and start it again.
  • Starting or restarting single services. Native starts and restarts the whole project.
  • UDP ports. Only TCP ports with an explicit host port are published.
  • Automatic restart for services that publish a port.
  • A one-command setup. Preparing the runtime is manual.

Compose features that stay on Compose

A project that uses any of these runs on the Compose backend in v5. Native up refuses with E_NATIVE_PROJECT_UNSUPPORTED, names the feature, and starts nothing.

Compose featureWhy it stays on Compose
External networksNative only uses networks it creates and owns
External volumesNative only uses volumes it creates and owns
Labels Hack or Compose reserveThese labels prove which tool owns a resource
Builds beyond a basic context, dockerfile and targetBuild arguments, secrets, SSH and cache options are not supported
Platforms other than Linux arm64The virtual machine runs Linux arm64. linux/amd64 works only for services you opt in to emulation.

Details and the exact checks: Compose projects that stay on the Compose backend.

Other limits

  • Shared machine. All native projects run in one virtual machine. They are separated the way Compose projects are, not by a machine each.
  • Images. Images need a Linux arm64 variant. Local registries need an explicit opt-in. Registries signed by a private certificate authority are not supported.
  • Data. Data does not move between backends, or between prerelease versions. Each new prerelease starts with fresh native state.
  • Rollback. An older prerelease may refuse state written by a newer one. That is a refusal, not a rollback.
  • Speed and resources. Not measured in public yet. Do not assume native is faster or lighter than Compose.

The full list is under candidate capability limits.

When something is refused

A refusal is a result, not a bug to work around. Hack prints a one-line error with a stable code and changes nothing. Do not loosen security settings, raise limits or delete Hack's state to get past it. Run the project on Compose, and tell us which feature you needed.


Source: v5 (next.12) · docs/site/native/limits.md.

On this page