diff --git a/README.md b/README.md
index 90f5f78419..a31510e918 100644
--- a/README.md
+++ b/README.md
@@ -356,6 +356,36 @@ After changing hostname or ports:
2. Access the UI at: `http://${HOST}:${ARCHON_UI_PORT}`
3. Update your AI client configuration with the new hostname and MCP port
+### Custom Domain Access
+
+To access Archon via custom domains (useful for reverse proxy setups or local network access):
+
+```bash
+# Add to your .env file
+VITE_ALLOWED_HOSTS=archon.lan
+
+# Multiple domains (comma-separated)
+VITE_ALLOWED_HOSTS=archon.lan,archon.local,myserver.lan
+```
+
+**Common Use Cases:**
+- **Local Network Access**: Access from other devices using `archon.lan` or similar
+- **Reverse Proxy**: Using Caddy, nginx with custom domains
+- **mDNS/Bonjour**: Setting up `.local` hostnames
+
+**Example Caddy Configuration:**
+```caddyfile
+archon.lan {
+ tls internal
+ reverse_proxy 192.168.1.100:3737
+}
+```
+
+**Important**: After adding `VITE_ALLOWED_HOSTS`, restart the frontend:
+```bash
+docker compose restart archon-frontend
+```
+
## 🔧 Development
### Quick Start
diff --git a/docs/docs/configuration.mdx b/docs/docs/configuration.mdx
index e4fc371ade..b5afa0052e 100644
--- a/docs/docs/configuration.mdx
+++ b/docs/docs/configuration.mdx
@@ -102,12 +102,50 @@ LOGFIRE_ENABLED=false # true=Logfire logging, false=standard loggin
# Service Discovery (automatically set for Docker)
# SERVICE_DISCOVERY_MODE=docker_compose
+
+# Custom Domain Configuration (Optional)
+VITE_ALLOWED_HOSTS=archon.lan # For custom domains
+# VITE_ALLOWED_HOSTS=archon.lan,archon.local # Multiple domains
```
- **API Keys**: Set through the Settings page UI instead of environment variables
- **Logging**: Use `LOGFIRE_ENABLED=true/false` to toggle between standard and enhanced logging
- **Zero Setup**: Standard logging works perfectly without any additional configuration
+- **Custom Domains**: Use `VITE_ALLOWED_HOSTS` for local network access or reverse proxy setups
+
+
+### 2. Custom Domain Configuration
+
+For accessing Archon via custom domains (useful for local network access or reverse proxy setups):
+
+```bash
+# Single custom domain
+VITE_ALLOWED_HOSTS=archon.lan
+
+# Multiple domains (comma-separated)
+VITE_ALLOWED_HOSTS=archon.lan,archon.local,myserver.lan
+```
+
+
+- **Local Network Access**: Access from other devices using `archon.lan` or similar
+- **Reverse Proxy**: Using Caddy, nginx, or similar with custom domains
+- **mDNS/Bonjour**: Setting up `.local` hostnames for easy discovery
+
+
+**Example Caddy Configuration:**
+```caddyfile
+archon.lan {
+ tls internal
+ reverse_proxy 192.168.1.100:3737
+}
+```
+
+
+After adding `VITE_ALLOWED_HOSTS`, restart the frontend container:
+```bash
+docker compose restart archon-frontend
+```
### Unified Logging Architecture
diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js
index d7a365bf7f..7d1836a38e 100644
--- a/docs/docusaurus.config.js
+++ b/docs/docusaurus.config.js
@@ -132,7 +132,7 @@ export default {
title: 'Archon',
logo: {
alt: 'Archon Logo',
- src: 'logo-neon.png',
+ src: 'img/logo-neon.png',
},
items: [
{
diff --git a/docs/package-lock.json b/docs/package-lock.json
index 0d8f7792c3..6dbc8aad63 100644
--- a/docs/package-lock.json
+++ b/docs/package-lock.json
@@ -12,12 +12,12 @@
"@docusaurus/preset-classic": "^3.8.0",
"@docusaurus/theme-mermaid": "^3.8.0",
"@mdx-js/react": "^3.0.0",
+ "@xyflow/react": "^12.6.0",
"clsx": "^2.0.0",
"lucide-react": "^0.513.0",
"prism-react-renderer": "^2.4.0",
"react": "^18.0.0",
- "react-dom": "^18.0.0",
- "reactflow": "^11.11.0"
+ "react-dom": "^18.0.0"
}
},
"node_modules/@algolia/autocomplete-core": {
@@ -4187,108 +4187,6 @@
"integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==",
"license": "MIT"
},
- "node_modules/@reactflow/background": {
- "version": "11.3.14",
- "resolved": "https://registry.npmjs.org/@reactflow/background/-/background-11.3.14.tgz",
- "integrity": "sha512-Gewd7blEVT5Lh6jqrvOgd4G6Qk17eGKQfsDXgyRSqM+CTwDqRldG2LsWN4sNeno6sbqVIC2fZ+rAUBFA9ZEUDA==",
- "license": "MIT",
- "dependencies": {
- "@reactflow/core": "11.11.4",
- "classcat": "^5.0.3",
- "zustand": "^4.4.1"
- },
- "peerDependencies": {
- "react": ">=17",
- "react-dom": ">=17"
- }
- },
- "node_modules/@reactflow/controls": {
- "version": "11.2.14",
- "resolved": "https://registry.npmjs.org/@reactflow/controls/-/controls-11.2.14.tgz",
- "integrity": "sha512-MiJp5VldFD7FrqaBNIrQ85dxChrG6ivuZ+dcFhPQUwOK3HfYgX2RHdBua+gx+40p5Vw5It3dVNp/my4Z3jF0dw==",
- "license": "MIT",
- "dependencies": {
- "@reactflow/core": "11.11.4",
- "classcat": "^5.0.3",
- "zustand": "^4.4.1"
- },
- "peerDependencies": {
- "react": ">=17",
- "react-dom": ">=17"
- }
- },
- "node_modules/@reactflow/core": {
- "version": "11.11.4",
- "resolved": "https://registry.npmjs.org/@reactflow/core/-/core-11.11.4.tgz",
- "integrity": "sha512-H4vODklsjAq3AMq6Np4LE12i1I4Ta9PrDHuBR9GmL8uzTt2l2jh4CiQbEMpvMDcp7xi4be0hgXj+Ysodde/i7Q==",
- "license": "MIT",
- "dependencies": {
- "@types/d3": "^7.4.0",
- "@types/d3-drag": "^3.0.1",
- "@types/d3-selection": "^3.0.3",
- "@types/d3-zoom": "^3.0.1",
- "classcat": "^5.0.3",
- "d3-drag": "^3.0.0",
- "d3-selection": "^3.0.0",
- "d3-zoom": "^3.0.0",
- "zustand": "^4.4.1"
- },
- "peerDependencies": {
- "react": ">=17",
- "react-dom": ">=17"
- }
- },
- "node_modules/@reactflow/minimap": {
- "version": "11.7.14",
- "resolved": "https://registry.npmjs.org/@reactflow/minimap/-/minimap-11.7.14.tgz",
- "integrity": "sha512-mpwLKKrEAofgFJdkhwR5UQ1JYWlcAAL/ZU/bctBkuNTT1yqV+y0buoNVImsRehVYhJwffSWeSHaBR5/GJjlCSQ==",
- "license": "MIT",
- "dependencies": {
- "@reactflow/core": "11.11.4",
- "@types/d3-selection": "^3.0.3",
- "@types/d3-zoom": "^3.0.1",
- "classcat": "^5.0.3",
- "d3-selection": "^3.0.0",
- "d3-zoom": "^3.0.0",
- "zustand": "^4.4.1"
- },
- "peerDependencies": {
- "react": ">=17",
- "react-dom": ">=17"
- }
- },
- "node_modules/@reactflow/node-resizer": {
- "version": "2.2.14",
- "resolved": "https://registry.npmjs.org/@reactflow/node-resizer/-/node-resizer-2.2.14.tgz",
- "integrity": "sha512-fwqnks83jUlYr6OHcdFEedumWKChTHRGw/kbCxj0oqBd+ekfs+SIp4ddyNU0pdx96JIm5iNFS0oNrmEiJbbSaA==",
- "license": "MIT",
- "dependencies": {
- "@reactflow/core": "11.11.4",
- "classcat": "^5.0.4",
- "d3-drag": "^3.0.0",
- "d3-selection": "^3.0.0",
- "zustand": "^4.4.1"
- },
- "peerDependencies": {
- "react": ">=17",
- "react-dom": ">=17"
- }
- },
- "node_modules/@reactflow/node-toolbar": {
- "version": "1.3.14",
- "resolved": "https://registry.npmjs.org/@reactflow/node-toolbar/-/node-toolbar-1.3.14.tgz",
- "integrity": "sha512-rbynXQnH/xFNu4P9H+hVqlEUafDCkEoCy0Dg9mG22Sg+rY/0ck6KkrAQrYrTgXusd+cEJOMK0uOOFCK2/5rSGQ==",
- "license": "MIT",
- "dependencies": {
- "@reactflow/core": "11.11.4",
- "classcat": "^5.0.3",
- "zustand": "^4.4.1"
- },
- "peerDependencies": {
- "react": ">=17",
- "react-dom": ">=17"
- }
- },
"node_modules/@sideway/address": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz",
@@ -5431,6 +5329,38 @@
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
"license": "Apache-2.0"
},
+ "node_modules/@xyflow/react": {
+ "version": "12.8.5",
+ "resolved": "https://registry.npmjs.org/@xyflow/react/-/react-12.8.5.tgz",
+ "integrity": "sha512-NRwcE8QE7dh6BbaIT7GmNccP7/RMDZJOKtzK4HQw599TAfzC8e5E/zw/7MwtpnSbbkqBYc+jZyOisd57sp/hPQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@xyflow/system": "0.0.69",
+ "classcat": "^5.0.3",
+ "zustand": "^4.4.0"
+ },
+ "peerDependencies": {
+ "react": ">=17",
+ "react-dom": ">=17"
+ }
+ },
+ "node_modules/@xyflow/system": {
+ "version": "0.0.69",
+ "resolved": "https://registry.npmjs.org/@xyflow/system/-/system-0.0.69.tgz",
+ "integrity": "sha512-+KYwHDnsapZQ1xSgsYwOKYN93fUR770LwfCT5qrvcmzoMaabO1rHa6twiEk7E5VUIceWciF8ukgfq9JC83B5jQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/d3-drag": "^3.0.7",
+ "@types/d3-interpolate": "^3.0.4",
+ "@types/d3-selection": "^3.0.10",
+ "@types/d3-transition": "^3.0.8",
+ "@types/d3-zoom": "^3.0.8",
+ "d3-drag": "^3.0.0",
+ "d3-interpolate": "^3.0.1",
+ "d3-selection": "^3.0.0",
+ "d3-zoom": "^3.0.0"
+ }
+ },
"node_modules/accepts": {
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
@@ -15973,24 +15903,6 @@
"react": ">=15"
}
},
- "node_modules/reactflow": {
- "version": "11.11.4",
- "resolved": "https://registry.npmjs.org/reactflow/-/reactflow-11.11.4.tgz",
- "integrity": "sha512-70FOtJkUWH3BAOsN+LU9lCrKoKbtOPnz2uq0CV2PLdNSwxTXOhCbsZr50GmZ+Rtw3jx8Uv7/vBFtCGixLfd4Og==",
- "license": "MIT",
- "dependencies": {
- "@reactflow/background": "11.3.14",
- "@reactflow/controls": "11.2.14",
- "@reactflow/core": "11.11.4",
- "@reactflow/minimap": "11.7.14",
- "@reactflow/node-resizer": "2.2.14",
- "@reactflow/node-toolbar": "1.3.14"
- },
- "peerDependencies": {
- "react": ">=17",
- "react-dom": ">=17"
- }
- },
"node_modules/readable-stream": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
diff --git a/docs/src/pages/index.js b/docs/src/pages/index.js
index b3c5018a8f..b938294b02 100644
--- a/docs/src/pages/index.js
+++ b/docs/src/pages/index.js
@@ -267,7 +267,7 @@ const ReactFlowDiagram = ({ reactFlowInstance, lucideIcons }) => {
style={{ background: '#8b5cf6', border: '2px solid #8b5cf6' }}
/>
-
+
{data.label}
{data.subtitle}
diff --git a/docs/static/img/logo-neon.png b/docs/static/img/logo-neon.png
new file mode 100644
index 0000000000..36aafa1334
Binary files /dev/null and b/docs/static/img/logo-neon.png differ