-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
135 lines (129 loc) · 4.97 KB
/
Copy pathdocker-compose.yml
File metadata and controls
135 lines (129 loc) · 4.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
services:
hayhooks:
build: .
expose: ["1416"]
volumes:
- ./pipelines:/pipelines
env_file:
- .env
depends_on:
- google-maps
- optimal-route
- perplexity
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "24"
open-webui:
image: ghcr.io/open-webui/open-webui:v0.9.5
container_name: open-webui
volumes:
- open-webui:/app/backend/data
ports:
- ${OPEN_WEBUI_PORT-3000}:8080
environment:
# Point Open WebUI's OpenAI-compatible client at hayhooks
OPENAI_API_BASE_URL: http://hayhooks:1416
OPENAI_API_KEY: "dummy"
# Auth disabled for local use — anyone with the URL gets in
WEBUI_AUTH: "False"
# UI features
ENABLE_TAGS_GENERATION: "True"
ENABLE_TITLE_GENERATION: "True"
ENABLE_FOLLOW_UP_GENERATION: "False"
ENABLE_EVALUATION_ARENA_MODELS: "False"
ENABLE_AUTOCOMPLETE_GENERATION: "False"
ENABLE_CODE_EXECUTION: "False"
ENABLE_OLLAMA_API: "False"
ENABLE_DIRECT_CONNECTIONS: "False"
# Keep the UI focused on the itinerary agent
# (see: https://docs.openwebui.com/getting-started/env-configuration/#user-permissions)
USER_PERMISSIONS_FEATURES_DIRECT_TOOL_SERVERS: "False"
USER_PERMISSIONS_FEATURES_WEB_SEARCH: "False"
USER_PERMISSIONS_FEATURES_IMAGE_GENERATION: "False"
USER_PERMISSIONS_FEATURES_CODE_INTERPRETER: "False"
USER_PERMISSIONS_WORKSPACE_KNOWLEDGE_ACCESS: "False"
USER_PERMISSIONS_WORKSPACE_PROMPTS_ACCESS: "False"
USER_PERMISSIONS_WORKSPACE_TOOLS_ACCESS: "False"
USER_PERMISSIONS_CHAT_MULTIPLE_MODELS: "False"
USER_PERMISSIONS_CHAT_STT: "False"
USER_PERMISSIONS_CHAT_TTS: "False"
USER_PERMISSIONS_CHAT_CALL: "False"
USER_PERMISSIONS_CHAT_SYSTEM_PROMPT: "False"
USER_PERMISSIONS_CHAT_VALVES: "False"
USER_PERMISSIONS_CHAT_CONTROLS: "False"
USER_PERMISSIONS_CHAT_PARAMS: "False"
USER_PERMISSIONS_CHAT_FILE_UPLOAD: "False"
OFFLINE_MODE: "True"
ENABLE_API_KEY: "False"
ENABLE_API_KEY_ENDPOINT_RESTRICTIONS: "True"
DEFAULT_PROMPT_SUGGESTIONS: |-
[
{
"title": ["3-day in Japan", "Street Food + Culture"],
"content": "Plan a 3-day trip to Japan focusing on street food and culture. I prefer boutique hotels, have a moderate budget, and will be traveling by train. I want to visit Tokyo, Kyoto, and Osaka."
},
{
"title": ["4-day in California", "National Parks + Coast"],
"content": "Plan a 4-day California road trip focusing on national parks and coastal drives. I prefer cozy motels and cabins, have a moderate budget, and will be traveling by rental car. I want to visit San Francisco, Big Sur, Santa Barbara, Joshua Tree, and Yosemite."
},
{
"title": ["Weekend in Barcelona", "Architecture + Tapas"],
"content": "Plan a 2-day weekend trip to Barcelona focusing on architecture and tapas. I prefer central 4-star hotels, have a moderate budget, and will be traveling by public transport. I want to visit Sagrada Familia, Park Guell, the Gothic Quarter, and Barceloneta beach."
}
]
depends_on:
- hayhooks
restart: unless-stopped
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "24"
# MCP servers required by itinerary_agent pipeline
google-maps:
image: supercorp/supergateway
expose: ["8100"]
environment:
- GOOGLE_MAPS_API_KEY=${GOOGLE_MAPS_API_KEY}
entrypoint: /bin/sh -c
command: >
'test -z "$GOOGLE_MAPS_API_KEY" &&
{ echo "❌ GOOGLE_MAPS_API_KEY missing"; exit 1; };
exec supergateway --stdio "npx -y @modelcontextprotocol/server-google-maps" --outputTransport streamableHttp --port 8100'
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "24"
optimal-route:
image: vblagoje/optimal-route
platform: linux/amd64
expose: ["8080"]
environment:
- GOOGLE_API_KEY=${GOOGLE_MAPS_API_KEY}
- MCP_TRANSPORT=streamable-http
# The MCP Python SDK enables DNS-rebinding protection by default, which
# rejects requests whose Host header doesn't match the allowlist. Disable
# it so the service accepts requests coming from other docker-compose
# services using the docker network DNS name.
- FASTMCP_TRANSPORT_SECURITY__ENABLE_DNS_REBINDING_PROTECTION=false
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "24"
perplexity:
# Build from official Perplexity MCP server repo with native HTTP support
# See: https://github.com/perplexityai/modelcontextprotocol
build:
context: https://github.com/perplexityai/modelcontextprotocol.git
expose: ["8080"]
environment:
- PERPLEXITY_API_KEY=${PERPLEXITY_API_KEY}
- PORT=8080
- BIND_ADDRESS=0.0.0.0
- ALLOWED_ORIGINS=*
volumes:
open-webui: