From 3829b188d842d1da6bc5e175fb1e5175e49eac23 Mon Sep 17 00:00:00 2001 From: Juan del Peral Date: Tue, 7 Jul 2026 18:44:30 -0300 Subject: [PATCH] feat(meta): add Arche AI workspace platform to meta.json (#875) Introduce Arche, a self-hosted AI workspace platform, with relevant metadata including description, logo, and GitHub link. This addition enhances the diversity of tools available in the project. Co-authored-by: Mauricio Siu --- blueprints/arche/arche.svg | 1 + blueprints/arche/docker-compose.yml | 102 ++++++++++++++++++++++++++++ blueprints/arche/template.toml | 33 +++++++++ build-scripts/pnpm-workspace.yaml | 2 + meta.json | 17 +++++ 5 files changed, 155 insertions(+) create mode 100644 blueprints/arche/arche.svg create mode 100644 blueprints/arche/docker-compose.yml create mode 100644 blueprints/arche/template.toml create mode 100644 build-scripts/pnpm-workspace.yaml diff --git a/blueprints/arche/arche.svg b/blueprints/arche/arche.svg new file mode 100644 index 00000000..06ae9720 --- /dev/null +++ b/blueprints/arche/arche.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blueprints/arche/docker-compose.yml b/blueprints/arche/docker-compose.yml new file mode 100644 index 00000000..cbefbe7e --- /dev/null +++ b/blueprints/arche/docker-compose.yml @@ -0,0 +1,102 @@ +version: "3.8" + +# Arche — AI workspace platform that spawns per-user OpenCode containers +# via a Docker socket proxy. +# +# PRE-REQUISITES (run once on the VPS before deploying): +# mkdir -p /opt/arche/kb-content /opt/arche/kb-config /opt/arche/users +# +# Optional (only needed to seed the Knowledge Base): +# git init --bare --initial-branch=main /opt/arche/kb-content +# git init --bare --initial-branch=main /opt/arche/kb-config +# +# POST-DEPLOY (set in Dokploy → Environment, then redeploy): +# 1. Deploy this template once. Dokploy auto-creates a network for the +# compose stack. +# 2. SSH into the host and find the network name: +# docker network ls --format '{{.Name}}' | grep arche +# It looks like `_default` or similar. +# 3. Add the env var OPENCODE_NETWORK= and redeploy. +# Without it, spawned user workspaces will fail to start. +# +# IMAGE ARCHITECTURE: +# Default tags target linux/amd64. For ARM64 hosts (Apple Silicon, +# Ampere, Graviton), override both images to the `-arm64` variants in +# Dokploy → Environment: +# ARCHE_WEB_IMAGE=ghcr.io/peaberry-studio/arche/web:latest-arm64 +# ARCHE_WORKSPACE_IMAGE=ghcr.io/peaberry-studio/arche/workspace:latest-arm64 + +services: + web: + image: ${ARCHE_WEB_IMAGE:-ghcr.io/peaberry-studio/arche/web:latest} + restart: unless-stopped + depends_on: + postgres: + condition: service_healthy + docker-socket-proxy: + condition: service_started + environment: + ARCHE_DOMAIN: ${ARCHE_DOMAIN} + DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD}@postgres:5432/arche?schema=public + + ARCHE_SESSION_PEPPER: ${ARCHE_SESSION_PEPPER} + ARCHE_ENCRYPTION_KEY: ${ARCHE_ENCRYPTION_KEY} + ARCHE_INTERNAL_TOKEN: ${ARCHE_INTERNAL_TOKEN} + ARCHE_GATEWAY_TOKEN_SECRET: ${ARCHE_GATEWAY_TOKEN_SECRET} + ARCHE_CONNECTOR_OAUTH_STATE_SECRET: ${ARCHE_CONNECTOR_OAUTH_STATE_SECRET} + + ARCHE_GATEWAY_TOKEN_TTL_SECONDS: "86400" + ARCHE_GATEWAY_BASE_URL: http://web:3000 + ARCHE_PUBLIC_BASE_URL: https://${ARCHE_DOMAIN} + ARCHE_SESSION_TTL_DAYS: "7" + ARCHE_COOKIE_SECURE: "true" + + ARCHE_SEED_ADMIN_EMAIL: ${ARCHE_SEED_ADMIN_EMAIL} + ARCHE_SEED_ADMIN_PASSWORD: ${ARCHE_SEED_ADMIN_PASSWORD} + ARCHE_SEED_ADMIN_SLUG: ${ARCHE_SEED_ADMIN_SLUG:-admin} + + CONTAINER_PROXY_HOST: docker-socket-proxy + CONTAINER_PROXY_PORT: "2375" + OPENCODE_IMAGE: ${ARCHE_WORKSPACE_IMAGE:-ghcr.io/peaberry-studio/arche/workspace:latest} + OPENCODE_NETWORK: ${OPENCODE_NETWORK} + + KB_CONTENT_HOST_PATH: /opt/arche/kb-content + KB_CONFIG_HOST_PATH: /opt/arche/kb-config + ARCHE_USERS_PATH: /opt/arche/users + expose: + - "3000" + volumes: + - /opt/arche/kb-content:/kb-content + - /opt/arche/kb-config:/kb-config + - /opt/arche/users:/opt/arche/users + + postgres: + image: postgres:16 + restart: unless-stopped + environment: + POSTGRES_DB: arche + POSTGRES_USER: postgres + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + volumes: + - postgres_data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 10s + timeout: 5s + retries: 5 + + docker-socket-proxy: + image: ghcr.io/tecnativa/docker-socket-proxy:master + restart: unless-stopped + environment: + CONTAINERS: 1 + NETWORKS: 1 + IMAGES: 1 + INFO: 1 + POST: 1 + VOLUMES: 1 + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + +volumes: + postgres_data: diff --git a/blueprints/arche/template.toml b/blueprints/arche/template.toml new file mode 100644 index 00000000..5772c7b3 --- /dev/null +++ b/blueprints/arche/template.toml @@ -0,0 +1,33 @@ +[variables] +main_domain = "${domain}" +postgres_password = "${password:32}" +session_pepper = "${base64:32}" +encryption_key = "${base64:32}" +internal_token = "${base64:32}" +gateway_token_secret = "${base64:32}" +connector_oauth_state_secret = "${base64:32}" +seed_admin_email = "${email}" +seed_admin_password = "${password:16}" + +[config] +env = [ + "ARCHE_DOMAIN=${main_domain}", + "POSTGRES_PASSWORD=${postgres_password}", + "ARCHE_SESSION_PEPPER=${session_pepper}", + "ARCHE_ENCRYPTION_KEY=${encryption_key}", + "ARCHE_INTERNAL_TOKEN=${internal_token}", + "ARCHE_GATEWAY_TOKEN_SECRET=${gateway_token_secret}", + "ARCHE_CONNECTOR_OAUTH_STATE_SECRET=${connector_oauth_state_secret}", + "ARCHE_SEED_ADMIN_EMAIL=${seed_admin_email}", + "ARCHE_SEED_ADMIN_PASSWORD=${seed_admin_password}", + "ARCHE_SEED_ADMIN_SLUG=admin", + "ARCHE_WEB_IMAGE=ghcr.io/peaberry-studio/arche/web:latest", + "ARCHE_WORKSPACE_IMAGE=ghcr.io/peaberry-studio/arche/workspace:latest", + "OPENCODE_NETWORK=", +] +mounts = [] + +[[config.domains]] +serviceName = "web" +port = 3000 +host = "${main_domain}" diff --git a/build-scripts/pnpm-workspace.yaml b/build-scripts/pnpm-workspace.yaml new file mode 100644 index 00000000..00f6fc47 --- /dev/null +++ b/build-scripts/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +allowBuilds: + esbuild: set this to true or false diff --git a/meta.json b/meta.json index 73391677..2022bca3 100644 --- a/meta.json +++ b/meta.json @@ -449,6 +449,23 @@ "nosql" ] }, + { + "id": "arche", + "name": "Arche", + "version": "latest", + "description": "Arche is a self-hosted AI workspace platform that spawns per-user OpenCode coding containers backed by a shared Knowledge Base. Requires the `arche-internal` external Docker network and `/opt/arche/{kb-content,kb-config,users}` directories on the host before deploy. Images are linux/amd64 by default; override `ARCHE_WEB_IMAGE` and `ARCHE_WORKSPACE_IMAGE` to the `-arm64` tag variants for ARM64 hosts.", + "logo": "arche.svg", + "links": { + "github": "https://github.com/peaberry-studio/arche" + }, + "tags": [ + "ai", + "coding", + "workspace", + "self-hosted", + "llm" + ] + }, { "id": "archivebox", "name": "ArchiveBox",