Skip to main content

ARC kernel — capability-based Python platform

Project description

kernel

The ARC kernel — repo/project name is kernel; the Python package it provides is arc (flat layout, no src/). This is what every project's arc.<capability> namespace is ultimately built on.

arc/                # this repo
├── pyproject.toml      # name = "arc-kernel" (distribution — "arc" was taken
│                          on PyPI), packages = ["arc"]
├── README.md
├── LICENSE
├── .gitignore
└── arc/                # the actual package — `import arc`
    ├── __init__.py
    ├── cli.py           # the `arc` command: init, install, build, settings, plugin
    ├── registry.py
    ├── settings.py
    └── secrets.py

Two-tier install model (mirrors frappe-bench / bench)

  1. Bootstrap globally, once — either pip install arc-kernel (or pipx install arc-kernel / uv tool install arc-kernel, both preferred over a bare pip install for a CLI tool) from PyPI, or uv tool install --editable . from a local clone of this repo if you're working on the kernel itself. Either way you get the arc command anywhere on your machine.
  2. Per projectarc init clones THIS repo into <project>/arc/ and wires up a uv workspace. From then on, use <project>/.venv/bin/arc for project commands — that copy is pinned to the exact commit this project was built against, independent of the global bootstrap CLI's version.

Note: inside a scaffolded project you'll see project/arc/arc/ — the outer arc/ is this project's kernel slot (a workspace member, named the way apps/frappe names its slot in a bench); the inner arc/ is the actual Python package. Two different things, same name for a real reason — not duplication.

Commands

arc init [project_name] --kernel-repo <git-url-or-path> [--kernel-branch main] [--env dev]
arc install <git-url> [--branch BRANCH] [--name NAME]
arc build [-p/--plugin NAME] [--no-lock]
arc settings get <key> [--reveal]
arc settings set <key> <value> [--secret]
arc settings delete <key>
arc plugin list
arc plugin enable <name>
arc plugin disable <name>

ARC_KERNEL_REPO env var can be set once so --kernel-repo doesn't need to be typed on every arc init.

Plugin manifest format

Every plugin repo has, at its root:

# plugin.toml — ARC-specific metadata only
[plugin]
name = "psqldb"
version = "0.1.0"
capability = "psqldb"          # exported as arc.<capability> at boot
requires = []
optional_requires = ["redix"]
# pyproject.toml — standard Python packaging; real dependencies live HERE
[project]
name = "psqldb"
dependencies = ["asyncpg>=0.29"]

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

Following this same kernel's convention, plugin packages should also use a flat layout (psqldb/psqldb/__init__.py inside the plugin's own repo, not psqldb/src/psqldb/) — same reasoning, same fix, applied consistently.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

arc_kernel-0.1.0.tar.gz (36.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

arc_kernel-0.1.0-py3-none-any.whl (41.2 kB view details)

Uploaded Python 3

File details

Details for the file arc_kernel-0.1.0.tar.gz.

File metadata

  • Download URL: arc_kernel-0.1.0.tar.gz
  • Upload date:
  • Size: 36.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for arc_kernel-0.1.0.tar.gz
Algorithm Hash digest
SHA256 997989f5c2053a9a269bda29be4363c93b82bf4b508609fcedd060453d8eb8a9
MD5 5b56c5133c31109cc0143717f5998068
BLAKE2b-256 78ea40f24296af6fa41bdb29983656bb861c7a8f8b95e493c625de272894a6eb

See more details on using hashes here.

File details

Details for the file arc_kernel-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: arc_kernel-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 41.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for arc_kernel-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c5759b0205653298382e1df2a1a5580b0d927662568c371819fcce70cb153056
MD5 a521686c31dfb97d28d73c84659d82c1
BLAKE2b-256 78f5a450e0135139bafe390da90fb0f9093952b3fb3a697982cceb4c7120a920

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page