2026-03-21 03:01:38 +00:00
/ * *
* Marketplace data : curated app list , categorization , aliases , and tier logic .
* Extracted from Marketplace . vue to keep the view under 500 lines .
* /
export interface MarketplaceApp {
id : string
title? : string
version? : string
description? : string | { short? : string ; long? : string }
icon? : string
author? : string
dockerImage? : string
manifestUrl? : string
repoUrl? : string
webUrl? : string
category? : string
source? : string
url? : string
s9pkUrl? : string
trustScore? : number
trustTier? : string
relayCount? : number
}
export interface InstallProgress {
id : string
title : string
status : 'downloading' | 'installing' | 'starting' | 'complete' | 'error'
progress : number
message : string
attempt : number
}
2026-03-26 10:46:26 +00:00
/** Archipelago app registry — all app images are mirrored here */
2026-04-23 08:22:32 -04:00
const REGISTRY = '146.59.87.168:3000/lfg2025'
2026-03-26 10:46:26 +00:00
2026-03-21 03:01:38 +00:00
/** Marketplace app ID -> backend package keys (for "Already Installed" when first-boot/deploy created them) */
export const INSTALLED_ALIASES : Record < string , string [ ] > = {
mempool : [ 'mempool-web' , 'mempool-api' , 'archy-mempool-web' , 'archy-mempool-db' ] ,
bitcoin : [ 'bitcoin-knots' ] ,
btcpay : [ 'btcpay-server' , 'archy-btcpay-db' , 'archy-nbxplorer' ] ,
immich : [ 'immich-server' , 'immich-app' , 'immich_server' , 'immich_postgres' , 'immich_redis' ] ,
nextcloud : [ 'nextcloud-aio' , 'nextcloud-server' ] ,
fedimint : [ 'fedimint-gateway' ] ,
electrumx : [ 'electrumx' , 'archy-electrs-ui' ] ,
grafana : [ 'grafana' ] ,
jellyfin : [ 'jellyfin' ] ,
vaultwarden : [ 'vaultwarden' ] ,
searxng : [ 'searxng' ] ,
homeassistant : [ 'homeassistant' ] ,
photoprism : [ 'photoprism' ] ,
lnd : [ 'lnd' , 'archy-lnd-ui' ] ,
filebrowser : [ 'filebrowser' ] ,
tailscale : [ 'tailscale' ] ,
ollama : [ 'ollama' ] ,
}
/** Get app tier classification (matches backend get_app_tier) */
export function getAppTier ( appId : string ) : string {
const core = [ 'bitcoin-knots' , 'bitcoin' , 'lnd' , 'mempool' , 'btcpay-server' , 'dwn' , 'filebrowser' ]
const recommended = [ 'fedimint' , 'thunderhub' , 'vaultwarden' , 'uptime-kuma' , 'grafana' , 'searxng' , 'tailscale' , 'portainer' ]
if ( core . includes ( appId ) ) return 'core'
if ( recommended . includes ( appId ) ) return 'recommended'
return 'optional'
}
/** Categorize community apps based on their ID and description */
export function categorizeCommunityApp ( app : MarketplaceApp ) : string {
if ( app . category ) return app . category
const id = app . id . toLowerCase ( )
const title = app . title ? . toLowerCase ( ) || ''
const description = ( typeof app . description === 'string' ? app . description : ( app . description as { short? : string } ) ? . short ? ? '' ) . toLowerCase ( )
const combined = ` ${ id } ${ title } ${ description } `
if ( id . includes ( 'bitcoin' ) || id . includes ( 'btc' ) || id . includes ( 'lightning' ) ||
id . includes ( 'lnd' ) || id . includes ( 'cln' ) || id . includes ( 'electr' ) ||
id . includes ( 'fedimint' ) || id . includes ( 'cashu' ) || title . includes ( 'lightning' ) ||
combined . includes ( 'wallet' ) || combined . includes ( 'satoshi' ) ) {
return 'money'
}
if ( id . includes ( 'btcpay' ) || id . includes ( 'commerce' ) || id . includes ( 'shop' ) ||
id . includes ( 'store' ) || id . includes ( 'pos' ) || id . includes ( 'payment' ) ||
combined . includes ( 'merchant' ) || combined . includes ( 'invoice' ) ) {
return 'commerce'
}
if ( id . includes ( 'cloud' ) || id . includes ( 'nextcloud' ) || id . includes ( 'sync' ) ||
id . includes ( 'storage' ) || id . includes ( 'backup' ) || id . includes ( 'file' ) ||
id . includes ( 'photo' ) || id . includes ( 'immich' ) || id . includes ( 'jellyfin' ) ||
id . includes ( 'plex' ) || id . includes ( 'media' ) || id . includes ( 'vault' ) ||
combined . includes ( 'password manager' ) || combined . includes ( 'file storage' ) ) {
return 'data'
}
if ( id . includes ( 'home-assistant' ) || id . includes ( 'homeassistant' ) ||
id . includes ( 'smart-home' ) || id . includes ( 'automation' ) || id . includes ( 'iot' ) ||
combined . includes ( 'home automation' ) || combined . includes ( 'smart home' ) ) {
return 'home'
}
if ( id . includes ( 'nostr' ) || ( id . includes ( 'relay' ) && combined . includes ( 'nostr' ) ) ||
combined . includes ( 'nostr relay' ) || combined . includes ( 'nostr client' ) ) {
return 'nostr'
}
if ( id . includes ( 'vpn' ) || id . includes ( 'wireguard' ) || id . includes ( 'tailscale' ) ||
id . includes ( 'proxy' ) || id . includes ( 'dns' ) || id . includes ( 'pihole' ) ||
id . includes ( 'adguard' ) || id . includes ( 'nginx' ) || id . includes ( 'tor' ) ||
combined . includes ( 'network' ) || combined . includes ( 'firewall' ) ) {
return 'networking'
}
if ( id . includes ( 'matrix' ) || id . includes ( 'synapse' ) || id . includes ( 'element' ) ||
id . includes ( 'mastodon' ) || id . includes ( 'lemmy' ) ||
id . includes ( 'messenger' ) || id . includes ( 'chat' ) || id . includes ( 'social' ) ||
id . includes ( 'cups' ) || combined . includes ( 'communication' ) ||
combined . includes ( 'messaging' ) ) {
return 'community'
}
return 'other'
}
/** Curated list of apps with Docker Hub images */
export function getCuratedAppList ( ) : MarketplaceApp [ ] {
return [
{
id : 'bitcoin-knots' ,
title : 'Bitcoin Knots' ,
version : '28.1.0' ,
description : 'Run a full Bitcoin node. Validate and relay blocks and transactions on the Bitcoin network.' ,
icon : '/assets/img/app-icons/bitcoin-knots.webp' ,
author : 'Bitcoin Knots' ,
2026-03-26 10:46:26 +00:00
dockerImage : ` ${ REGISTRY } /bitcoin-knots:latest ` ,
2026-03-21 03:01:38 +00:00
manifestUrl : undefined ,
repoUrl : 'https://github.com/bitcoinknots/bitcoin'
} ,
{
id : 'btcpay-server' ,
title : 'BTCPay Server' ,
fix: container install flow, filebrowser auth, AppCard enrichment
- Fix .198-style fresh installs: systemd service ExecStartPre creates
/run/user/1000, enable podman.socket, chmod 644 /etc/hosts
- Filebrowser: add /data volume for database (fixes read-only crash),
secure auth with random password via backend RPC (no more admin/admin)
- AppCard: enrich installing state with marketplace metadata (icon,
title, description, tier badge, author, version)
- Registry: btcpayserver 1.13.5 → 1.13.7, images mirrored
- ReadWritePaths: add home container paths for rootless podman
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 13:32:54 +00:00
version : '1.13.7' ,
2026-03-21 03:01:38 +00:00
description : 'Self-hosted Bitcoin payment processor. Accept Bitcoin payments without intermediaries or fees.' ,
icon : '/assets/img/app-icons/btcpay-server.png' ,
author : 'BTCPay Server Foundation' ,
fix: container install flow, filebrowser auth, AppCard enrichment
- Fix .198-style fresh installs: systemd service ExecStartPre creates
/run/user/1000, enable podman.socket, chmod 644 /etc/hosts
- Filebrowser: add /data volume for database (fixes read-only crash),
secure auth with random password via backend RPC (no more admin/admin)
- AppCard: enrich installing state with marketplace metadata (icon,
title, description, tier badge, author, version)
- Registry: btcpayserver 1.13.5 → 1.13.7, images mirrored
- ReadWritePaths: add home container paths for rootless podman
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 13:32:54 +00:00
dockerImage : ` ${ REGISTRY } /btcpayserver:1.13.7 ` ,
2026-03-21 03:01:38 +00:00
manifestUrl : undefined ,
repoUrl : 'https://github.com/btcpayserver/btcpayserver'
} ,
{
id : 'lnd' ,
title : 'LND' ,
fix: overhaul container lifecycle — recovery, health, uninstall, UI state
Container recovery:
- Health monitor: MAX_RESTART_ATTEMPTS 3→10, interval 60s→120s
- Dependency-aware restarts: won't restart services before their deps
- Reset dependent counters when a dependency recovers
- Handle "created" state containers (were invisible to health monitor)
- Added IndeedHub, mempool-api, mysql to tier system
- Crash recovery: podman start timeout 30s→120s with retry
- Podman client: socket timeout 5s→30s, added restart policy
UI state representation:
- Exit code 0 shows "stopped" (gray), not "crashed" (red)
- Exit code 137 shows "killed (OOM)"
- Non-zero exit shows "crashed" (red)
- Added exit_code field to PackageDataEntry
Install/uninstall fixes:
- Install returns error when container doesn't start (was silent success)
- Post-install hooks awaited instead of fire-and-forget tokio::spawn
- Uninstall: graceful rm before force, volume prune, network cleanup
- Uninstall returns error on partial failure (was 200 OK)
Config consistency:
- DB passwords read from /var/lib/archipelago/secrets/ (was hardcoded)
- Bitcoin: added ZMQ ports 28332/28333 for LND block notifications
- IndeedHub port 7777→8190 (was conflicting with strfry)
- Marketplace versions: LND 0.17.4→0.18.4, Mempool 2.5.0→3.0.0
Performance:
- Metrics collector interval 60s→300s (was duplicating health monitor)
- Podman client: proper error propagation instead of unwrap_or_default
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 07:03:57 +01:00
version : '0.18.4' ,
2026-03-21 03:01:38 +00:00
description : 'Lightning Network Daemon. Fast and cheap Bitcoin payments through the Lightning Network.' ,
icon : '/assets/img/app-icons/lnd.svg' ,
author : 'Lightning Labs' ,
2026-03-26 10:46:26 +00:00
dockerImage : ` ${ REGISTRY } /lnd:v0.18.4-beta ` ,
2026-03-21 03:01:38 +00:00
manifestUrl : undefined ,
repoUrl : 'https://github.com/lightningnetwork/lnd'
} ,
{
id : 'thunderhub' ,
title : 'ThunderHub' ,
version : '0.13.31' ,
description : 'Lightning node management UI. Manage channels, send and receive payments, view routing fees, and monitor your Lightning node.' ,
icon : '/assets/img/app-icons/thunderhub.svg' ,
author : 'Anthony Potdevin' ,
dockerImage : 'docker.io/apotdevin/thunderhub:v0.13.31' ,
manifestUrl : undefined ,
repoUrl : 'https://github.com/apotdevin/thunderhub'
} ,
{
id : 'mempool' ,
title : 'Mempool Explorer' ,
fix: overhaul container lifecycle — recovery, health, uninstall, UI state
Container recovery:
- Health monitor: MAX_RESTART_ATTEMPTS 3→10, interval 60s→120s
- Dependency-aware restarts: won't restart services before their deps
- Reset dependent counters when a dependency recovers
- Handle "created" state containers (were invisible to health monitor)
- Added IndeedHub, mempool-api, mysql to tier system
- Crash recovery: podman start timeout 30s→120s with retry
- Podman client: socket timeout 5s→30s, added restart policy
UI state representation:
- Exit code 0 shows "stopped" (gray), not "crashed" (red)
- Exit code 137 shows "killed (OOM)"
- Non-zero exit shows "crashed" (red)
- Added exit_code field to PackageDataEntry
Install/uninstall fixes:
- Install returns error when container doesn't start (was silent success)
- Post-install hooks awaited instead of fire-and-forget tokio::spawn
- Uninstall: graceful rm before force, volume prune, network cleanup
- Uninstall returns error on partial failure (was 200 OK)
Config consistency:
- DB passwords read from /var/lib/archipelago/secrets/ (was hardcoded)
- Bitcoin: added ZMQ ports 28332/28333 for LND block notifications
- IndeedHub port 7777→8190 (was conflicting with strfry)
- Marketplace versions: LND 0.17.4→0.18.4, Mempool 2.5.0→3.0.0
Performance:
- Metrics collector interval 60s→300s (was duplicating health monitor)
- Podman client: proper error propagation instead of unwrap_or_default
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 07:03:57 +01:00
version : '3.0.0' ,
2026-03-21 03:01:38 +00:00
description : 'Self-hosted Bitcoin blockchain and mempool visualizer with beautiful explorer interface.' ,
icon : '/assets/img/app-icons/mempool.webp' ,
author : 'Mempool' ,
fix: overhaul container lifecycle — recovery, health, uninstall, UI state
Container recovery:
- Health monitor: MAX_RESTART_ATTEMPTS 3→10, interval 60s→120s
- Dependency-aware restarts: won't restart services before their deps
- Reset dependent counters when a dependency recovers
- Handle "created" state containers (were invisible to health monitor)
- Added IndeedHub, mempool-api, mysql to tier system
- Crash recovery: podman start timeout 30s→120s with retry
- Podman client: socket timeout 5s→30s, added restart policy
UI state representation:
- Exit code 0 shows "stopped" (gray), not "crashed" (red)
- Exit code 137 shows "killed (OOM)"
- Non-zero exit shows "crashed" (red)
- Added exit_code field to PackageDataEntry
Install/uninstall fixes:
- Install returns error when container doesn't start (was silent success)
- Post-install hooks awaited instead of fire-and-forget tokio::spawn
- Uninstall: graceful rm before force, volume prune, network cleanup
- Uninstall returns error on partial failure (was 200 OK)
Config consistency:
- DB passwords read from /var/lib/archipelago/secrets/ (was hardcoded)
- Bitcoin: added ZMQ ports 28332/28333 for LND block notifications
- IndeedHub port 7777→8190 (was conflicting with strfry)
- Marketplace versions: LND 0.17.4→0.18.4, Mempool 2.5.0→3.0.0
Performance:
- Metrics collector interval 60s→300s (was duplicating health monitor)
- Podman client: proper error propagation instead of unwrap_or_default
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 07:03:57 +01:00
dockerImage : ` ${ REGISTRY } /mempool-frontend:v3.0.0 ` ,
2026-03-21 03:01:38 +00:00
manifestUrl : undefined ,
repoUrl : 'https://github.com/mempool/mempool'
} ,
{
id : 'homeassistant' ,
title : 'Home Assistant' ,
version : '2024.1' ,
description : 'Open-source home automation platform. Control and automate your smart home devices privately.' ,
icon : '/assets/img/app-icons/homeassistant.png' ,
author : 'Home Assistant' ,
2026-03-26 10:46:26 +00:00
dockerImage : ` ${ REGISTRY } /home-assistant:2024.1 ` ,
2026-03-21 03:01:38 +00:00
manifestUrl : undefined ,
repoUrl : 'https://github.com/home-assistant/core'
} ,
{
id : 'grafana' ,
title : 'Grafana' ,
version : '10.2.0' ,
description : 'Analytics and monitoring platform. Create dashboards and visualize data from multiple sources.' ,
icon : '/assets/img/app-icons/grafana.png' ,
author : 'Grafana Labs' ,
2026-03-26 10:46:26 +00:00
dockerImage : ` ${ REGISTRY } /grafana:10.2.0 ` ,
2026-03-21 03:01:38 +00:00
manifestUrl : undefined ,
repoUrl : 'https://github.com/grafana/grafana'
} ,
{
id : 'searxng' ,
title : 'SearXNG' ,
version : '2024.1.0' ,
description : 'Privacy-respecting metasearch engine. Search without tracking or ads.' ,
icon : '/assets/img/app-icons/searxng.png' ,
author : 'SearXNG' ,
2026-03-26 10:46:26 +00:00
dockerImage : ` ${ REGISTRY } /searxng:latest ` ,
2026-03-21 03:01:38 +00:00
manifestUrl : undefined ,
repoUrl : 'https://github.com/searxng/searxng'
} ,
{
id : 'ollama' ,
title : 'Ollama' ,
version : '0.1.0' ,
description : 'Run large language models locally. Download and run AI models like Llama, Mistral on your own hardware.' ,
icon : '/assets/img/app-icons/ollama.png' ,
author : 'Ollama' ,
2026-03-26 10:46:26 +00:00
dockerImage : ` ${ REGISTRY } /ollama:latest ` ,
2026-03-21 03:01:38 +00:00
manifestUrl : undefined ,
repoUrl : 'https://github.com/ollama/ollama'
} ,
{
2026-04-02 18:20:52 +01:00
id : 'cryptpad' ,
title : 'CryptPad' ,
version : '2024.12.0' ,
description : 'End-to-end encrypted documents, spreadsheets, and presentations. Zero-knowledge collaboration.' ,
icon : '/assets/img/app-icons/cryptpad.webp' ,
author : 'XWiki SAS' ,
dockerImage : ` ${ REGISTRY } /cryptpad:2024.12.0 ` ,
2026-03-21 03:01:38 +00:00
manifestUrl : undefined ,
2026-04-02 18:20:52 +01:00
repoUrl : 'https://github.com/cryptpad/cryptpad'
2026-03-21 03:01:38 +00:00
} ,
{
id : 'nextcloud' ,
title : 'Nextcloud' ,
version : '28.0' ,
description : 'Self-hosted cloud storage and collaboration platform. Your own private cloud.' ,
icon : '/assets/img/app-icons/nextcloud.webp' ,
author : 'Nextcloud' ,
2026-03-26 10:46:26 +00:00
dockerImage : ` ${ REGISTRY } /nextcloud:28 ` ,
2026-03-21 03:01:38 +00:00
manifestUrl : undefined ,
repoUrl : 'https://github.com/nextcloud/server'
} ,
{
id : 'vaultwarden' ,
title : 'Vaultwarden' ,
version : '1.30.0' ,
description : 'Self-hosted password manager (Bitwarden-compatible). Secure vault for passwords and secrets.' ,
icon : '/assets/img/app-icons/vaultwarden.webp' ,
author : 'Vaultwarden' ,
2026-03-26 10:46:26 +00:00
dockerImage : ` ${ REGISTRY } /vaultwarden:1.30.0-alpine ` ,
2026-03-21 03:01:38 +00:00
manifestUrl : undefined ,
repoUrl : 'https://github.com/dani-garcia/vaultwarden'
} ,
{
id : 'jellyfin' ,
title : 'Jellyfin' ,
version : '10.8.0' ,
description : 'Free media server system. Stream your movies, music, and photos to any device.' ,
icon : '/assets/img/app-icons/jellyfin.webp' ,
author : 'Jellyfin' ,
2026-03-26 10:46:26 +00:00
dockerImage : ` ${ REGISTRY } /jellyfin:10.8.13 ` ,
2026-03-21 03:01:38 +00:00
manifestUrl : undefined ,
repoUrl : 'https://github.com/jellyfin/jellyfin'
} ,
{
id : 'photoprism' ,
title : 'PhotoPrism' ,
version : '240915' ,
description : 'AI-powered photo management. Organize and browse photos with facial recognition.' ,
icon : '/assets/img/app-icons/photoprism.svg' ,
author : 'PhotoPrism' ,
2026-03-26 10:46:26 +00:00
dockerImage : ` ${ REGISTRY } /photoprism:240915 ` ,
2026-03-21 03:01:38 +00:00
manifestUrl : undefined ,
repoUrl : 'https://github.com/photoprism/photoprism'
} ,
{
id : 'immich' ,
title : 'Immich' ,
version : '1.90.0' ,
description : 'High-performance self-hosted photo and video backup. Mobile-first with ML features.' ,
icon : '/assets/img/app-icons/immich.png' ,
author : 'Immich' ,
2026-03-26 10:46:26 +00:00
dockerImage : ` ${ REGISTRY } /immich:release ` ,
2026-03-21 03:01:38 +00:00
manifestUrl : undefined ,
repoUrl : 'https://github.com/immich-app/immich'
} ,
fix: container DNS, nginx chown, onboarding guard, seed UX, install flow
Backend:
- Add --add-host host.containers.internal:host-gateway to LND and Bitcoin
Knots containers (fixes DNS resolution failure in rootless podman)
- Add --user 0:0 and DAC_OVERRIDE to nginx UI sidecar containers
(fixes chown crash in rootless podman for bitcoin-ui, electrs-ui, lnd-ui)
- Add hostadd to Rust Podman API client for web UI container installs
- Add Chromium privacy flags to kiosk launcher (disable telemetry)
Frontend:
- Fix onboarding reset on raw IP visits (trust localStorage as first-class
signal, skip boot screen when server is up but not onboarded)
- Fix seed regression: persist challenge indices in sessionStorage so going
back from Verify doesn't change which words are asked
- Remove glass container from seed Generate/Verify/Restore screens
- Add Back button to Restore from Seed screen
- Replace Network card: Tor (purple), VPN status (orange), Bitcoin sync (orange)
- Add ElectrumX to curated app list with correct .webp icon
- Install flow: navigate to My Apps immediately with toast, hide
installed/installing apps from marketplace and discover views
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 13:06:57 +01:00
{
id : 'electrumx' ,
title : 'ElectrumX' ,
version : '1.18.0' ,
description : 'Electrum protocol server. Index the blockchain for fast wallet lookups, privately.' ,
icon : '/assets/img/app-icons/electrumx.webp' ,
author : 'Luke Childs' ,
dockerImage : ` ${ REGISTRY } /electrumx:v1.18.0 ` ,
manifestUrl : undefined ,
repoUrl : 'https://github.com/spesmilo/electrumx'
} ,
2026-03-21 03:01:38 +00:00
{
id : 'filebrowser' ,
title : 'File Browser' ,
version : '2.27.0' ,
description : 'Web-based file manager. Browse, upload, and manage files through a web interface.' ,
icon : '/assets/img/app-icons/file-browser.webp' ,
author : 'File Browser' ,
2026-03-26 10:46:26 +00:00
dockerImage : ` ${ REGISTRY } /filebrowser:v2.27.0 ` ,
2026-03-21 03:01:38 +00:00
manifestUrl : undefined ,
repoUrl : 'https://github.com/filebrowser/filebrowser'
} ,
{
id : 'nginx-proxy-manager' ,
title : 'Nginx Proxy Manager' ,
version : '2.11.0' ,
description : 'Easy proxy management with SSL. Beautiful web interface for managing reverse proxies.' ,
icon : '/assets/img/app-icons/nginx.svg' ,
author : 'Nginx Proxy Manager' ,
2026-03-26 10:46:26 +00:00
dockerImage : ` ${ REGISTRY } /nginx-proxy-manager:latest ` ,
2026-03-21 03:01:38 +00:00
manifestUrl : undefined ,
repoUrl : 'https://github.com/NginxProxyManager/nginx-proxy-manager'
} ,
{
id : 'portainer' ,
title : 'Portainer' ,
version : '2.19.0' ,
description : 'Container management UI. Manage Docker containers through a beautiful web interface.' ,
icon : '/assets/img/app-icons/portainer.webp' ,
author : 'Portainer' ,
2026-03-26 10:46:26 +00:00
dockerImage : ` ${ REGISTRY } /portainer:latest ` ,
2026-03-21 03:01:38 +00:00
manifestUrl : undefined ,
repoUrl : 'https://github.com/portainer/portainer'
} ,
{
id : 'uptime-kuma' ,
title : 'Uptime Kuma' ,
version : '1.23.0' ,
description : 'Self-hosted monitoring tool. Monitor uptime for HTTP(s), TCP, DNS, and more.' ,
icon : '/assets/img/app-icons/uptime-kuma.webp' ,
author : 'Uptime Kuma' ,
2026-03-26 10:46:26 +00:00
dockerImage : ` ${ REGISTRY } /uptime-kuma:1 ` ,
2026-03-21 03:01:38 +00:00
manifestUrl : undefined ,
repoUrl : 'https://github.com/louislam/uptime-kuma'
} ,
{
id : 'tailscale' ,
title : 'Tailscale' ,
version : '1.78.0' ,
description : 'Zero-config VPN for secure remote access. Connect all your devices with WireGuard mesh network.' ,
icon : '/assets/img/app-icons/tailscale.webp' ,
author : 'Tailscale' ,
2026-03-26 10:46:26 +00:00
dockerImage : ` ${ REGISTRY } /tailscale:stable ` ,
2026-03-21 03:01:38 +00:00
manifestUrl : undefined ,
repoUrl : 'https://github.com/tailscale/tailscale'
} ,
{
id : 'fedimint' ,
title : 'Fedimint' ,
version : '0.10.0' ,
description : 'Federated Bitcoin mint with built-in Guardian UI. Private, scalable Bitcoin through federated guardians.' ,
icon : '/assets/img/app-icons/fedimint.png' ,
author : 'Fedimint' ,
2026-03-26 10:46:26 +00:00
dockerImage : ` ${ REGISTRY } /fedimintd:v0.10.0 ` ,
2026-03-21 03:01:38 +00:00
manifestUrl : undefined ,
repoUrl : 'https://github.com/fedimint/fedimint'
} ,
{
id : 'indeedhub' ,
title : 'Indeehub' ,
version : '0.1.0' ,
description : 'Bitcoin documentary streaming platform with Nostr identity sign-in. Stream God Bless Bitcoin and other educational content about sovereignty and decentralized technology.' ,
icon : '/assets/img/app-icons/indeedhub.png' ,
author : 'Indeehub Team' ,
2026-04-11 16:47:54 -04:00
dockerImage : 'git.tx1138.com/lfg2025/indeedhub:latest' ,
2026-03-21 03:01:38 +00:00
manifestUrl : undefined ,
repoUrl : 'https://github.com/indeedhub/indeedhub'
} ,
{
id : 'dwn' ,
title : 'Decentralized Web Node' ,
version : '0.4.0' ,
description : 'Store and sync your personal data across devices using decentralized web node protocols. Own your data with DID-based access control.' ,
icon : '/assets/img/app-icons/dwn.svg' ,
author : 'TBD' ,
2026-03-26 10:46:26 +00:00
dockerImage : ` ${ REGISTRY } /dwn-server:main ` ,
2026-03-21 03:01:38 +00:00
manifestUrl : undefined ,
repoUrl : 'https://github.com/TBD54566975/dwn-server'
} ,
{
id : 'nostrudel' ,
title : 'noStrudel' ,
version : '0.40.0' ,
category : 'nostr' ,
description : 'A feature-rich Nostr web client with NIP-07 signer support. Browse your feed, post notes, manage relays, and interact with the Nostr network — all signed with your node\'s Nostr identity.' ,
icon : '/assets/img/app-icons/nostrudel.svg' ,
author : 'hzrd149' ,
dockerImage : '' ,
manifestUrl : undefined ,
repoUrl : 'https://github.com/hzrd149/nostrudel' ,
webUrl : 'https://nostrudel.ninja'
} ,
{
id : 'botfights' ,
title : 'BotFights' ,
version : '1.0.0' ,
2026-04-11 19:59:36 +01:00
category : 'community' ,
description : 'Bot arena + 2-player arcade fighter with controller support. AI bots battle in trivia, humans duke it out with controllers.' ,
2026-03-21 03:01:38 +00:00
icon : '/assets/img/app-icons/botfights.svg' ,
author : 'BotFights' ,
feat: botfights, discover, mobile gamepad, content handler, package config updates
Miscellaneous improvements: botfights manifest, discover page curated
apps, mobile gamepad enhancements, content HTTP handler, package
install config updates, health monitor tweaks, shared content UI,
container specs and image version updates.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 23:11:41 -04:00
dockerImage : ` ${ REGISTRY } /botfights:1.1.0 ` ,
2026-03-21 03:01:38 +00:00
manifestUrl : undefined ,
repoUrl : 'https://botfights.net' ,
} ,
2026-04-12 06:10:56 -04:00
{
id : 'gitea' ,
title : 'Gitea' ,
version : '1.23' ,
category : 'data' ,
description : 'Self-hosted Git service with built-in container registry, CI/CD, issue tracking, and package hosting. Lightweight alternative to GitHub/GitLab.' ,
icon : '/assets/img/app-icons/gitea.svg' ,
author : 'Gitea' ,
dockerImage : 'docker.io/gitea/gitea:1.23' ,
manifestUrl : undefined ,
repoUrl : 'https://gitea.com' ,
} ,
2026-03-21 03:01:38 +00:00
{
id : 'nwnn' ,
title : 'Next Web News Network' ,
version : '1.0.0' ,
category : 'l484' ,
description : 'Decentralized news and link aggregator, synchronized from Telegram. Community-curated content on Bitcoin, sovereignty, and decentralized tech.' ,
icon : '/assets/img/app-icons/nwnn.png' ,
author : 'L484' ,
dockerImage : '' ,
manifestUrl : undefined ,
repoUrl : 'https://nwnn.l484.com' ,
webUrl : 'https://nwnn.l484.com'
} ,
{
id : '484-kitchen' ,
title : '484 Kitchen' ,
version : '1.0.0' ,
category : 'l484' ,
description : 'K484 application platform — an internal tool for the L484 network.' ,
icon : '/assets/img/app-icons/484-kitchen.png' ,
author : 'L484' ,
dockerImage : '' ,
manifestUrl : undefined ,
repoUrl : 'https://484.kitchen' ,
webUrl : 'https://484.kitchen'
} ,
{
id : 'call-the-operator' ,
title : 'Call the Operator' ,
version : '1.0.0' ,
category : 'l484' ,
description : 'Escape the Matrix — a portal for exploring decentralized alternatives and reclaiming digital sovereignty.' ,
icon : '/assets/img/app-icons/call-the-operator.png' ,
author : 'TX1138' ,
dockerImage : '' ,
manifestUrl : undefined ,
repoUrl : 'https://cta.tx1138.com' ,
webUrl : 'https://cta.tx1138.com'
} ,
{
id : 'arch-presentation' ,
title : 'Arch Presentation' ,
version : '1.0.0' ,
category : 'l484' ,
description : 'Archipelago: The Future of Decentralized Infrastructure — an interactive presentation about the Archipelago project vision.' ,
icon : '/assets/img/app-icons/arch-presentation.png' ,
author : 'L484' ,
dockerImage : '' ,
manifestUrl : undefined ,
repoUrl : 'https://present.l484.com' ,
webUrl : 'https://present.l484.com'
} ,
{
id : 'syntropy-institute' ,
title : 'Syntropy Institute' ,
version : '1.0.0' ,
category : 'l484' ,
description : 'Medicine Reimagined — Manual Kinetics, Syntropy Frequency analysis-therapy, digital homeopathy, and concierge protocols.' ,
icon : '/assets/img/app-icons/syntropy-institute.png' ,
author : 'Syntropy Institute' ,
dockerImage : '' ,
manifestUrl : undefined ,
repoUrl : 'https://syntropy.institute' ,
webUrl : 'https://syntropy.institute'
} ,
{
id : 't-zero' ,
title : 'T-0' ,
version : '1.0.0' ,
category : 'l484' ,
description : 'Documentary series exploring decentralization, Bitcoin, and the mavericks building the ungovernable future. Conversations with the builders, powered by Nostr.' ,
icon : '/assets/img/app-icons/t-zero.png' ,
author : 'T-0' ,
dockerImage : '' ,
manifestUrl : undefined ,
repoUrl : 'https://teeminuszero.net' ,
webUrl : 'https://teeminuszero.net'
}
]
}