Explicit providers

Build one native target without pretending it is another.

Every native operation pairs one descriptor-declared target with one compatible Arcane OS checkout. Unsupported toolchains fail; they never fall back to a browser package.

One targetOne Arcane rootOne selected output

Current development targets

TargetResultRun boundarySigning
portableApp-scoped Core directoryNot directly runnableUnsigned local test
windows-x64Windows x64 EXE bundleCompatible Windows hostUnsigned local development
linux-x64Linux x64 DEBCompatible Linux x64 hostUnsigned local development
linux-arm64Linux ARM64 DEBCompatible native ARM64 toolchainUnsigned local development
android-arm64Architecture-neutral APKConnected physical ARM64 deviceDevelopment-signed

The Android package currently has no native ABI payload; android-arm64 names its supported physical-device run profile.

1. Declare the exact target

Scaffold with the target, or add it to the canonical schema-2 app descriptor and validate it. A command-line target does not override a missing descriptor declaration.

Published SDK · target-aware scaffold
npx arcane-os@0.5.18 new my-app --path ./my-app --target windows-x64 --git
cd my-app
npm install

Expected: the descriptor declares both browser and windows-x64 and includes the required raster application icon. Native operations still require an explicit compatible --arcane-root.

2. Diagnose the paired toolchain

Pass the Arcane OS checkout every time. native-doctor validates the selected provider and local prerequisites without creating a release artifact.

Provider check
npm exec -- arcane native-doctor --target windows-x64 --arcane-root "../Arcane OS"
Do not run native-prepare immediately before every build.

It is a standalone toolchain diagnostic. The build already prepares the selected toolchain state.

3. Build and run in one process

run owns the selected build and supported executable launch. The native provider retains the state required for that operation; tests and artifact verification remain explicitly selected work.

Windows x64 development run
npm exec -- arcane run --target windows-x64 --arcane-root "../Arcane OS" --output-root "../arcane-native-output"
Linux and Android variants
# Linux x64
npm exec -- arcane run --target linux-x64 --arcane-root "../Arcane OS" --format deb --signing unsigned-local-test

# Linux ARM64 on a compatible native ARM64 toolchain
npm exec -- arcane run --target linux-arm64 --arcane-root "../Arcane OS" --format deb --signing unsigned-local-test

# Android on a connected physical ARM64 device
npm exec -- arcane run --target android-arm64 --arcane-root "../Arcane OS" --format apk --signing development

4. Treat portable as a directory

The portable provider creates an app-scoped Core directory. It intentionally has no executable run path.

Portable output
npm exec -- arcane native-doctor --target portable --arcane-root "../Arcane OS"
npm exec -- arcane build --target portable --arcane-root "../Arcane OS"

Release-readiness principle

Test the exact artifact that would ship, on its real platform. A source check, a browser package, or a different architecture cannot substitute for the selected native artifact. Production installers, platform signing, and public release publication are separate release-system concerns.

  • Descriptor target and command target match.
  • Arcane root is explicit and compatible.
  • Output root stays outside an integrated Arcane checkout.
  • Build and run use the selected artifact and its owning provider.