Archipelago — open-source initial import

This commit is contained in:
Archipelago
2026-08-12 10:55:50 +00:00
commit 520b93d58e
1937 changed files with 441306 additions and 0 deletions
@@ -0,0 +1,13 @@
{
"source_path": "/home/archipelago/Projects/archy/docs/adr/001-podman-over-docker.md",
"type": "ADR",
"confidence": "high",
"manifest_override": false,
"title": "ADR-001: Podman Over Docker",
"summary": "Chose Podman over Docker as the container runtime for rootless, daemonless operation with native systemd integration.",
"scope": ["Podman", "Docker", "container runtime", "rootless containers", "systemd integration", "archy-net network"],
"cross_refs": [],
"locked": true,
"precedence": null,
"notes": ""
}
@@ -0,0 +1,13 @@
{
"source_path": "/home/archipelago/Projects/archy/docs/adr/002-did-key-method.md",
"type": "ADR",
"confidence": "high",
"manifest_override": false,
"title": "ADR-002: DID Key Method for Node Identity",
"summary": "Chose did:key (Ed25519) as the primary DID method for node identity; self-contained and offline-capable, with federation trust lists mitigating rotation/revocation gaps.",
"scope": ["did:key", "node identity", "DID methods", "Ed25519 keys", "peer authentication", "federation trust lists", "verifiable credentials"],
"cross_refs": [],
"locked": true,
"precedence": null,
"notes": ""
}
@@ -0,0 +1,22 @@
{
"source_path": "/home/archipelago/Projects/archy/docs/adr/003-nostr-for-discovery.md",
"type": "ADR",
"confidence": "high",
"manifest_override": false,
"title": "ADR-003: Nostr Relays for Node and App Discovery",
"summary": "Chose Nostr relays (NIP-78, kind 30078) for decentralized node discovery and marketplace app manifest distribution.",
"scope": [
"Nostr relays",
"node discovery",
"app discovery",
"marketplace app manifests",
"NIP-78",
"NIP-33 replaceable events",
"trust scoring",
"relay caching"
],
"cross_refs": [],
"locked": true,
"precedence": null,
"notes": ""
}
@@ -0,0 +1,13 @@
{
"source_path": "/home/archipelago/Projects/archy/docs/adr/004-tor-for-peer-communication.md",
"type": "ADR",
"confidence": "high",
"manifest_override": false,
"title": "ADR-004: Tor Hidden Services for Peer Communication",
"summary": "Chose Tor hidden services (.onion) for all inter-node RPC/control-plane communication; bulk data pulled from registries instead.",
"scope": ["Tor hidden services", "inter-node communication", "federation sync", "archy-tor container", "RPC/control plane", "NAT traversal"],
"cross_refs": [],
"locked": true,
"precedence": null,
"notes": ""
}
@@ -0,0 +1,13 @@
{
"source_path": "/home/archipelago/Projects/archy/docs/adr/005-chacha20-backup-encryption.md",
"type": "ADR",
"confidence": "high",
"manifest_override": false,
"title": "ADR-005: ChaCha20-Poly1305 for Backup Encryption",
"summary": "Chose ChaCha20-Poly1305 AEAD with Argon2id key derivation for encrypting backups at rest, over AES-256-GCM and XChaCha20-Poly1305.",
"scope": ["backup encryption", "ChaCha20-Poly1305", "Argon2id key derivation", "AEAD", "nonce handling"],
"cross_refs": [],
"locked": true,
"precedence": null,
"notes": ""
}
@@ -0,0 +1,13 @@
{
"source_path": "/home/archipelago/Projects/archy/docs/adr/006-nostr-marketplace-discovery.md",
"type": "ADR",
"confidence": "high",
"manifest_override": false,
"title": "ADR-006: Nostr Relays for Marketplace Discovery",
"summary": "Chose Nostr relays (NIP-78, kind 30078 events) for decentralized app manifest discovery instead of a centralized marketplace server.",
"scope": ["Nostr relays", "app manifest discovery", "marketplace", "trust scoring", "trust tiers", "manifest signature verification"],
"cross_refs": [],
"locked": true,
"precedence": null,
"notes": ""
}
@@ -0,0 +1,13 @@
{
"source_path": "/home/archipelago/Projects/archy/docs/adr/007-did-federation-trust.md",
"type": "ADR",
"confidence": "high",
"manifest_override": false,
"title": "ADR-007: DID-Based Federation Trust",
"summary": "Chose bilateral DID-based verification with single-use invite codes over Tor for establishing federation trust between nodes, with Trusted/Observer/Untrusted levels.",
"scope": ["federation", "DID verification", "invite codes", "trust levels", "Tor hidden services", "Ed25519 keys"],
"cross_refs": ["ADR-003"],
"locked": true,
"precedence": null,
"notes": ""
}
@@ -0,0 +1,13 @@
{
"source_path": "/home/archipelago/Projects/archy/docs/adr/008-dual-key-strategy.md",
"type": "ADR",
"confidence": "high",
"manifest_override": false,
"title": "ADR-008: Dual Key Strategy (Ed25519 + Secp256k1)",
"summary": "Maintain two key pairs per node identity: Ed25519 for DID/Web5 operations, secp256k1 for Nostr/Bitcoin/Lightning, both derived from one master seed.",
"scope": ["node identity", "Ed25519", "secp256k1", "DID documents", "verifiable credentials", "federation authentication", "backup encryption", "Nostr event publishing", "node discovery", "Lightning Network", "key derivation", "master seed"],
"cross_refs": [],
"locked": true,
"precedence": null,
"notes": ""
}
@@ -0,0 +1,13 @@
{
"source_path": "/home/archipelago/Projects/archy/docs/adr/009-manifest-container-security.md",
"type": "ADR",
"confidence": "high",
"manifest_override": false,
"title": "ADR-009: Manifest-Level Container Security Enforcement",
"summary": "Enforce mandatory container security defaults (readonly root, no-new-privileges, non-root UID, dropped capabilities, pinned tags) at the manifest level during container creation.",
"scope": ["container security", "app manifests", "manifest validation", "podman container creation", "security defaults", "capability restrictions", "seccomp", "core/container module"],
"cross_refs": ["docs/app-manifest-spec.md", "core/container/src/", "core/security/src/"],
"locked": true,
"precedence": null,
"notes": ""
}
@@ -0,0 +1,13 @@
{
"source_path": "/home/archipelago/Projects/archy/docs/adr/011-dwn-deprioritization.md",
"type": "ADR",
"confidence": "high",
"manifest_override": false,
"title": "ADR-011: DWN Deprioritization",
"summary": "Deprioritizes Web5 DWN spec compliance after TBD's shutdown; keeps existing custom DWN store code and prioritizes Nostr plus Tor federation for peer sync.",
"scope": ["DWN (Decentralized Web Node)", "Web5", "dwn_store.rs", "Nostr", "federation", "peer discovery", "peer data sync"],
"cross_refs": [],
"locked": true,
"precedence": null,
"notes": ""
}
@@ -0,0 +1,29 @@
{
"source_path": "/home/archipelago/Projects/archy/docs/app-manifest-spec.md",
"type": "SPEC",
"confidence": "high",
"manifest_override": false,
"title": "App Manifest Specification",
"summary": "Defines the declarative manifest.yml schema for apps: top-level fields, container config, security policy, volumes, hooks, installation semantics, and signed-catalog/marketplace distribution.",
"scope": [
"app manifest.yml schema",
"ContainerConfig (image/build, networks, derived_env, secret_env, generated_secrets, generated_certs)",
"SecurityPolicy (capabilities allow-list, network_policy, readonly_root)",
"volumes and bind-mount confinement",
"lifecycle hooks (post_install, pre_start)",
"health checks and interfaces",
"Quadlet installation and reconciler semantics",
"signed app catalog distribution",
"decentralized marketplace distribution"
],
"cross_refs": [
"app-developer-guide.md",
"manifest-hooks-design.md",
"marketplace-protocol.md",
"core/container/src/manifest.rs",
"api/rpc/package/stacks.rs"
],
"locked": false,
"precedence": null,
"notes": ""
}