Skip to content

igna-s/Meridian-Ai-Agent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

157 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌟 Meridian — AI-Powered Project Management

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.


🚀 Technologies

Frontend & Architecture

  • React 18 (Standalone via CDN)
  • Babel Standalone (In-browser JSX compilation)
  • Vanilla CSS (Custom design system, CSS variables)
  • Serverless / Zero-Backend Architecture

AI Engine

  • 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.

☁️ Hosting

  • Azure Static Web Apps — Automatically deployed via GitHub Actions.
  • Hugging Face Spaces — Also deployed as a Static Space.

✨ Key Features

🧠 Context-Aware Global AI (ai-engine.jsx)

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.

💻 Embedded VS Code AI Agent

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 the console.log output is piped back to the simulated terminal. HTML files render live previews.
  • Simulated Terminal: The agent can use a run_command tool to simulate terminal behavior, creating a realistic local development environment entirely in the browser.

🗄️ "Serverless" Static Database

  • 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 localStorage and seamlessly merged with the static JSON data upon rendering, simulating a full CRUD backend without any server infrastructure.

☁️ Deployment on AMD Developer Cloud (vLLM Endpoint)

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.

Quick Deploy via Web Console (AMD ROCm Image)

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:

  1. Open the Web Console from your Droplet's dashboard.
  2. 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.sh

📋 Monitoring Startup Logs

To 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.

💬 Monitoring Live Chat Traffic

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

🔒 Secure HTTPS Connection via Cloudflare Tunnel (Recommended)

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:80

After 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.


☁️ Deployment on Azure (Frontend)

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.

  1. Connect your GitHub repository to Azure Static Web Apps.
  2. Set the app_location to "./Frontend2".
  3. Set the api_location to "" (Leave empty).
  4. Push to main — GitHub Actions will automatically deploy the app in seconds.

⚙️ How to configure the AI (AMD Endpoint)

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:

  1. Open your deployed Meridian application in the browser.
  2. Go to the Settings view (or open the embedded VS Code view).
  3. 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
  4. The URL is securely saved in your browser's localStorage.

Warning — Mixed Content: Since the AMD endpoint uses http:// and Meridian is hosted on https://, your browser may block the connection by default. Use the Cloudflare Tunnel method above to avoid this entirely.


🛠️ Local Development

You don't need npm, Node.js, or Python to run this project locally!

  1. Clone the repository.
  2. Open the Frontend2 directory.
  3. Start any basic local web server. For example:
    npx serve .
    Or using Python:
    python -m http.server 8080
  4. Open http://localhost:8080/Meridian.html in your browser.

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Meridian — An AI-first project management platform featuring a serverless architecture powered by React and an AMD MI300X Inference Endpoint.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors