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)
- Bootstrap globally, once — either
pip install arc-kernel(orpipx install arc-kernel/uv tool install arc-kernel, both preferred over a barepip installfor a CLI tool) from PyPI, oruv tool install --editable .from a local clone of this repo if you're working on the kernel itself. Either way you get thearccommand anywhere on your machine. - Per project —
arc initclones THIS repo into<project>/arc/and wires up a uv workspace. From then on, use<project>/.venv/bin/arcfor 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
997989f5c2053a9a269bda29be4363c93b82bf4b508609fcedd060453d8eb8a9
|
|
| MD5 |
5b56c5133c31109cc0143717f5998068
|
|
| BLAKE2b-256 |
78ea40f24296af6fa41bdb29983656bb861c7a8f8b95e493c625de272894a6eb
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5759b0205653298382e1df2a1a5580b0d927662568c371819fcce70cb153056
|
|
| MD5 |
a521686c31dfb97d28d73c84659d82c1
|
|
| BLAKE2b-256 |
78f5a450e0135139bafe390da90fb0f9093952b3fb3a697982cceb4c7120a920
|