EdgeCitadel
EdgeCitadel connects AI Agents across a Core and enrolled Edge hosts. It runs complete Managed Agents such as Gemma and Home Assistant adapters, and connects active Pi, Claude Code, and Codex sessions through their native plugin systems.
Install
Choose one method:
pip install edgecitadel
# or
brew install edgecitadel
Verify it with edgecitadel --version.
Create a Core
Start Docker, then choose a hostname or IP that Edge hosts can reach:
edgecitadel create --host core.example.internal
edgecitadel doctor
The command checks local requirements and prints the dashboard URL.
Join an Edge
Create a one-time invitation on the Core:
edgecitadel invite --node-id studio-macmini --host core.example.internal
Run the returned edgecitadel join command on the Edge. The default
single-client mode connects the EdgeCitadel service directly to Core NATS:
edgecitadel join 'ecjoin://...'
Use nats_leaf when Agents on this host must keep communicating while the Core
connection is unavailable:
brew install nats-server # macOS; use your system package manager elsewhere
edgecitadel join 'ecjoin://...' --messaging-mode nats_leaf
In both modes, Agent integrations talk to the host-local EdgeCitadel service.
Only nats_leaf needs a local NATS server; it is the durable local message bus
and maintains the outbound Leaf connection to Core.
Install a Managed Agent
Managed Agents are complete runtimes operated by EdgeCitadel:
edgecitadel agent install gemma
edgecitadel agent list
edgecitadel agent status edgecitadel.gemma
Home Assistant is installed the same way after its URL, token, and allowlist are configured. EdgeCitadel operates the adapter and never installs or removes Home Assistant itself. See the Gemma guide and Home Assistant guide.
Connect an existing Agent
These plugins add Agent discovery, delegation, inbox, task-state, trace, and diagnostic tools to an active host session. They do not start the host in the background, and EdgeCitadel does not pass NATS credentials through the plugin protocol.
# Pi
pi install "$(edgecitadel connector path pi)"
# Claude Code
claude plugin marketplace add "$(edgecitadel connector path claude-code)"
claude plugin install edgecitadel@edgecitadel
# Codex
codex plugin marketplace add "$(edgecitadel connector path codex)"
codex plugin add edgecitadel@edgecitadel
Start a new host session, then use its edgecitadel_* tools. Inspect active
connections with edgecitadel connector list and edgecitadel connector status <connector-id>.
Operate
edgecitadel status
edgecitadel doctor
edgecitadel service status
edgecitadel task list --connector-id <connector-id>
edgecitadel trace list --connector-id <connector-id>
Stop a Core without deleting its data with edgecitadel down.
Upgrade or uninstall
Use the package manager that installed EdgeCitadel:
pip install --upgrade edgecitadel
pip uninstall edgecitadel
brew upgrade edgecitadel
brew uninstall edgecitadel
Before uninstalling an Edge, run edgecitadel service stop; in nats_leaf
mode also run edgecitadel messaging stop. Uninstall preserves local state in
~/.edgecitadel.
More detail: onboarding and troubleshooting and contributing.
License
MIT
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 edgecitadel-0.1.0.tar.gz.
File metadata
- Download URL: edgecitadel-0.1.0.tar.gz
- Upload date:
- Size: 243.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
96d2b3f1716d73d9d4e3c55c7c08be02e235e2f5d3753d2886e6c4209e93dbed
|
|
| MD5 |
7afbf2d91b75eb2e558a1d94f4aea4bc
|
|
| BLAKE2b-256 |
70a18e06037f4be70a1b1f7d3da556f1d6e4a908e6566f373e81c26e5f899e1a
|
Provenance
The following attestation bundles were made for edgecitadel-0.1.0.tar.gz:
Publisher:
publish-pypi.yml on EdgeCitadelTeam/EdgeCitadel
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
edgecitadel-0.1.0.tar.gz -
Subject digest:
96d2b3f1716d73d9d4e3c55c7c08be02e235e2f5d3753d2886e6c4209e93dbed - Sigstore transparency entry: 2695033806
- Sigstore integration time:
-
Permalink:
EdgeCitadelTeam/EdgeCitadel@8598b6aec4d042d450f0678900ad688547aa7fbf -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/EdgeCitadelTeam
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@8598b6aec4d042d450f0678900ad688547aa7fbf -
Trigger Event:
release
-
Statement type:
File details
Details for the file edgecitadel-0.1.0-py3-none-any.whl.
File metadata
- Download URL: edgecitadel-0.1.0-py3-none-any.whl
- Upload date:
- Size: 356.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
60d986da58d17e92af8127e29b257fbffffadc6b54e8c253b3e21d1144b2ed89
|
|
| MD5 |
9328b8982a2b63f1c3f1657f66e084f7
|
|
| BLAKE2b-256 |
6ee6c7ef6a3a2d3cffe5751f4e5e9aea7f5d8d5d6be22af431a43742a484d4b9
|
Provenance
The following attestation bundles were made for edgecitadel-0.1.0-py3-none-any.whl:
Publisher:
publish-pypi.yml on EdgeCitadelTeam/EdgeCitadel
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
edgecitadel-0.1.0-py3-none-any.whl -
Subject digest:
60d986da58d17e92af8127e29b257fbffffadc6b54e8c253b3e21d1144b2ed89 - Sigstore transparency entry: 2695033987
- Sigstore integration time:
-
Permalink:
EdgeCitadelTeam/EdgeCitadel@8598b6aec4d042d450f0678900ad688547aa7fbf -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/EdgeCitadelTeam
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@8598b6aec4d042d450f0678900ad688547aa7fbf -
Trigger Event:
release
-
Statement type: