Meridian is a modern, AI-first project management and engineering operations platform. It demonstrates a fully serverless, static architecture that runs entirely in the browser, powered by React and an AMD Inference Endpoint.
Unlike traditional platforms, Meridian has no backend server or database. It uses static JSON files as a read-only database, browser localStorage for state mutations, and a global AI engine that adapts its persona based on the context of the user's current view.
- React 18 (Standalone via CDN)
- Babel Standalone (In-browser JSX compilation)
- Vanilla CSS (Custom design system, CSS variables)
- Serverless / Zero-Backend Architecture
- AMD Inference Endpoint (Llama 3.3 70B Versatile) — Provides instant, high-speed inference
- Client-side Orchestration — AI prompts and context are built and executed entirely in the browser.
- Azure Static Web Apps — Automatically deployed via GitHub Actions.
- Hugging Face Spaces — Also deployed as a Static Space.
Meridian features a ubiquitous AI assistant that changes its "role" depending on what you are looking at:
- Sprint Coach: Summarizes iterations and identifies blockers.
- PR Analyst: Reviews pull requests and estimates merge risks.
- Compute Analyst: Suggests GPU optimization and spots cost savings.
- Docs Writer: Drafts Engineering ADRs and retrospective documents.
A fully functional, in-browser code editor simulation:
- Autonomous File Management: The AI can create, edit, and read HTML/CSS/JS files.
- Sandboxed Execution: JavaScript files are executed in a secure browser
iframe, and theconsole.logoutput is piped back to the simulated terminal. HTML files render live previews. - Simulated Terminal: The agent can use a
run_commandtool to simulate terminal behavior, creating a realistic local development environment entirely in the browser.
- Data is fetched directly from static JSON files (
/backend/data/*.json). - Any user actions (creating an issue, approving a PR) are saved as "deltas" in the browser's
localStorageand seamlessly merged with the static JSON data upon rendering, simulating a full CRUD backend without any server infrastructure.
The project includes a shell script (deploy_amd_endpoint.sh) that automates the setup of the vLLM server on an AMD MI300X instance.
We use the following Docker parameters to ensure the server runs robustly in the background:
-d: Runs the container in detached mode so you can close your SSH session without stopping the server.--restart unless-stopped: Ensures the container starts automatically if the server reboots or if the Docker daemon restarts.
If you deployed using the "ROCm Software" image on the AMD Developer Cloud, the built-in firewall blocks port 8000 by default. It only allows port 80 and 443.
To deploy the endpoint without leaving your browser:
- Open the Web Console from your Droplet's dashboard.
- Run the following commands to clean up any process occupying port 80, then start the inference server:
# 1. Kill any existing containers (like Jupyter) and processes that occupy port 80
docker rm -f $(docker ps -a -q) || true
sudo fuser -k 80/tcp || sudo kill $(sudo lsof -t -i:80) || true
sleep 3
# 2. Download and run the deployment script
wget https://raw.githubusercontent.com/igna-s/Meridian-Ai-Agent/main/deploy_amd_endpoint.sh
chmod +x deploy_amd_endpoint.sh
./deploy_amd_endpoint.shTo see the model download progress (~130GB) and startup status:
docker logs -f $(docker ps -lq)Wait for the Application startup complete. message before connecting your frontend.
Once the server is running, watch every chat message going in and out in real time:
# See all incoming API requests (full logs)
docker logs -f $(docker ps -lq)
# See ONLY chat completions requests (filtered)
docker logs -f $(docker ps -lq) 2>&1 | grep "chat/completions"Every time a user sends a message in Meridian, you'll see a line like:
INFO: x.x.x.x - "POST /v1/chat/completions HTTP/1.1" 200 OK
Since the AMD server runs on plain http://, browsers will block requests from https:// frontends (Hugging Face Spaces, Azure Static Web Apps) due to Mixed Content restrictions.
The cleanest solution is a free Cloudflare Tunnel — no domain, no SSL certificate setup required.
Run this single command in your Web Console while the vLLM Docker container is already running:
wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 \
&& chmod +x cloudflared-linux-amd64 \
&& ./cloudflared-linux-amd64 tunnel --url http://localhost:80After a few seconds, cloudflared will print your unique HTTPS URL:
Your quick Tunnel has been created! Visit it at:
https://some-random-words.trycloudflare.com
Use that URL in Meridian's Settings → AI & Integrations:
https://some-random-words.trycloudflare.com/v1/chat/completions
Note: The tunnel URL changes every time you restart cloudflared. Keep this terminal session open while using the app. No Cloudflare account is required.
This project is optimized for deployment on the Azure Static Web Apps (Free Tier).
Because Meridian has no backend, the deployment process is extremely fast. Azure simply copies the Frontend2/ directory and serves it directly through its global CDN.
- Connect your GitHub repository to Azure Static Web Apps.
- Set the
app_locationto"./Frontend2". - Set the
api_locationto""(Leave empty). - Push to main — GitHub Actions will automatically deploy the app in seconds.
Since Meridian is 100% frontend and has no backend server, you do not need a .env file on the server.
To use the AI features:
- Open your deployed Meridian application in the browser.
- Go to the Settings view (or open the embedded VS Code view).
- Paste your AMD Endpoint URL into the URL input field.
- If using Cloudflare Tunnel:
https://your-tunnel.trycloudflare.com/v1/chat/completions - If allowing insecure content in browser:
http://<YOUR-IP>/v1/chat/completions
- If using Cloudflare Tunnel:
- The URL is securely saved in your browser's
localStorage.
Warning — Mixed Content: Since the AMD endpoint uses
http://and Meridian is hosted onhttps://, your browser may block the connection by default. Use the Cloudflare Tunnel method above to avoid this entirely.
You don't need npm, Node.js, or Python to run this project locally!
- Clone the repository.
- Open the
Frontend2directory. - Start any basic local web server. For example:
Or using Python:
npx serve .python -m http.server 8080
- Open
http://localhost:8080/Meridian.htmlin your browser.
This project is licensed under the MIT License - see the LICENSE file for details.