diff --git a/apps/apricot-blossom/config.json b/apps/apricot-blossom/config.json new file mode 100644 index 0000000..1798793 --- /dev/null +++ b/apps/apricot-blossom/config.json @@ -0,0 +1,56 @@ +{ + "name": "Apricot Blossom", + "id": "apricot-blossom", + "available": true, + "port": 3000, + "exposable": true, + "dynamic_config": true, + "short_desc": "AI avatar platform for preserving memories and voices of loved ones", + "author": "alexz", + "source": "https://gits.alexzaw.dev/alexz/runtipi", + "website": "", + "tipi_version": 1, + "version": "1.0.0", + "categories": ["ai", "utilities"], + "supported_architectures": ["arm64", "amd64"], + "min_tipi_version": "4.0.0", + "created_at": 1745107200000, + "updated_at": 1745107200000, + "form_fields": [ + { + "type": "password", + "label": "Anthropic API Key", + "hint": "Your Anthropic API key (starts with sk-ant-)", + "required": true, + "env_variable": "ANTHROPIC_API_KEY" + }, + { + "type": "password", + "label": "ElevenLabs API Key", + "hint": "Your ElevenLabs API key for voice synthesis", + "required": true, + "env_variable": "ELEVENLABS_API_KEY" + }, + { + "type": "text", + "label": "ElevenLabs Voice ID", + "hint": "The voice ID to use for speech synthesis", + "required": true, + "env_variable": "ELEVENLABS_VOICE_ID" + }, + { + "type": "text", + "label": "Supabase URL", + "hint": "Your Supabase project URL (e.g. https://xxxx.supabase.co)", + "required": true, + "env_variable": "NEXT_PUBLIC_SUPABASE_URL" + }, + { + "type": "password", + "label": "Supabase Anon Key", + "hint": "Your Supabase anonymous/public key", + "required": true, + "env_variable": "NEXT_PUBLIC_SUPABASE_ANON_KEY" + } + ] +} diff --git a/apps/apricot-blossom/docker-compose.json b/apps/apricot-blossom/docker-compose.json new file mode 100644 index 0000000..0f72355 --- /dev/null +++ b/apps/apricot-blossom/docker-compose.json @@ -0,0 +1,35 @@ +{ + "schemaVersion": 2, + "$schema": "https://schemas.runtipi.io/dynamic-compose.json", + "services": [ + { + "name": "apricot-blossom", + "image": "apricot-blossom:latest", + "isMain": true, + "internalPort": 3000, + "environment": [ + { "key": "NODE_ENV", "value": "production" }, + { "key": "NEXT_TELEMETRY_DISABLED", "value": "1" }, + { "key": "TZ", "value": "${TZ}" }, + { "key": "ANTHROPIC_API_KEY", "value": "${ANTHROPIC_API_KEY}" }, + { "key": "ELEVENLABS_API_KEY", "value": "${ELEVENLABS_API_KEY}" }, + { "key": "ELEVENLABS_VOICE_ID", "value": "${ELEVENLABS_VOICE_ID}" }, + { "key": "NEXT_PUBLIC_SUPABASE_URL", "value": "${NEXT_PUBLIC_SUPABASE_URL}" }, + { "key": "NEXT_PUBLIC_SUPABASE_ANON_KEY", "value": "${NEXT_PUBLIC_SUPABASE_ANON_KEY}" } + ], + "volumes": [ + { + "hostPath": "${APP_DATA_DIR}/data", + "containerPath": "/app/data", + "readOnly": false + } + ], + "healthCheck": { + "test": "wget --no-verbose --tries=1 --spider http://localhost:3000/ || exit 1", + "interval": "30s", + "timeout": "10s", + "retries": 3 + } + } + ] +}