From cc1a10bb925dc98b220e71a005d001f0e8dc6bcc Mon Sep 17 00:00:00 2001 From: robmsmt Date: Sun, 26 Apr 2026 16:35:56 +0200 Subject: [PATCH] frontend: archive local serving guide, refresh homepage, favicon --- README.md | 23 +++--------------- frontend/public/favicon-dark.svg | 3 +++ frontend/public/favicon-light.svg | 3 +++ frontend/public/images/sponsors/epfl.png | Bin 0 -> 3710 bytes .../public/images/sponsors/eth-ai-center.png | Bin 0 -> 25252 bytes .../public/images/sponsors/eth-zurich.svg | 4 +++ frontend/src/components/Head.astro | 4 +-- frontend/src/components/SponsorCard.astro | 8 +++--- .../guides/01-getting-started/index.md | 6 ++--- .../guides/01-getting-started/model-launch.md | 2 +- frontend/src/pages/index.astro | 17 +++++++------ 11 files changed, 32 insertions(+), 38 deletions(-) create mode 100644 frontend/public/favicon-dark.svg create mode 100644 frontend/public/favicon-light.svg create mode 100644 frontend/public/images/sponsors/epfl.png create mode 100644 frontend/public/images/sponsors/eth-ai-center.png create mode 100644 frontend/public/images/sponsors/eth-zurich.svg diff --git a/README.md b/README.md index 44e2d67..78922c8 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ # serving-api -Frontend and backend API proxy for SwissAI LLM serving. +Frontend and backend API proxy for SwissAI LLM serving. For examples on how to launch models, see [model-launch](https://github.com/swiss-ai/model-launch) repo. **Live at:** - Prod: [serving.swissai.svc.cscs.ch](https://serving.swissai.svc.cscs.ch) - Dev: [servingdev.swissai.svc.cscs.ch](https://servingdev.swissai.svc.cscs.ch) -- Local: with `docker compose up` +- Local: with `make run` ## Architecture @@ -26,7 +26,6 @@ Frontend and backend API proxy for SwissAI LLM serving. ▼ ┌─────────────────┐ │ OCF │ OpenTela P2P routing → model=apertus-... - │ │ └────────┬────────┘ │ ▼ @@ -40,28 +39,14 @@ Frontend and backend API proxy for SwissAI LLM serving. ``` backend/ # Python API proxy (FastAPI) — auth, caching, routing frontend/ # web UI (Astro + Svelte) -meta/ # Dockerfiles, k8s manifests, build scripts -tests/ # integration tests -tools/ # metrics & monitoring utilities +meta/ # example Dockerfiles, example k8s manifests, build scripts ``` OCF (Open Compute Framework) now renamed to OpenTela upstream is maintained at [eth-easl/OpenTela](https://github.com/eth-easl/OpenTela). We maintain a fork at [swiss-ai/OpenTela](https://github.com/swiss-ai/opentela) to control deployments to dev+prod. -## Quick Start - -### Docker - -```bash -docker compose up -``` - -### Local Development +## Dev Quick Start ```bash make install # install backend dependencies make run # start backend on :8080 - -# frontend -cd frontend -npm install && npm run dev ``` diff --git a/frontend/public/favicon-dark.svg b/frontend/public/favicon-dark.svg new file mode 100644 index 0000000..8d77150 --- /dev/null +++ b/frontend/public/favicon-dark.svg @@ -0,0 +1,3 @@ + + 🚀 + diff --git a/frontend/public/favicon-light.svg b/frontend/public/favicon-light.svg new file mode 100644 index 0000000..8d77150 --- /dev/null +++ b/frontend/public/favicon-light.svg @@ -0,0 +1,3 @@ + + 🚀 + diff --git a/frontend/public/images/sponsors/epfl.png b/frontend/public/images/sponsors/epfl.png new file mode 100644 index 0000000000000000000000000000000000000000..0c5a6ce89a1fd5eca6909e0a6587ed3d17b35238 GIT binary patch literal 3710 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 VL2}&DT~h!6002ovPDHLkV1iEvnW_K) literal 0 HcmV?d00001 diff --git a/frontend/public/images/sponsors/eth-zurich.svg b/frontend/public/images/sponsors/eth-zurich.svg new file mode 100644 index 0000000..8f432e2 --- /dev/null +++ b/frontend/public/images/sponsors/eth-zurich.svg @@ -0,0 +1,4 @@ + + + + diff --git a/frontend/src/components/Head.astro b/frontend/src/components/Head.astro index 9fa269c..5b81b19 100644 --- a/frontend/src/components/Head.astro +++ b/frontend/src/components/Head.astro @@ -23,9 +23,7 @@ const { title, description, image = "/nano.png" } = Astro.props; - - - + diff --git a/frontend/src/components/SponsorCard.astro b/frontend/src/components/SponsorCard.astro index 092806c..755a1f2 100644 --- a/frontend/src/components/SponsorCard.astro +++ b/frontend/src/components/SponsorCard.astro @@ -10,12 +10,12 @@ interface Props { const { name, logo, url, width = 158, height = 48 } = Astro.props; --- -
+
{url ? ( - - {name} + + {name} ) : ( - {name} + {name} )}
\ No newline at end of file diff --git a/frontend/src/content/guides/01-getting-started/index.md b/frontend/src/content/guides/01-getting-started/index.md index 2ea51a1..6b5701c 100644 --- a/frontend/src/content/guides/01-getting-started/index.md +++ b/frontend/src/content/guides/01-getting-started/index.md @@ -1,10 +1,10 @@ --- -title: "Getting Started with SP and Local Serving" -description: "Run models locally with Scratchpad and Ollama" +title: "[ARCHIVED] Getting Started with SP and Local Serving" +description: "[ARCHIVED] Run models locally with Scratchpad and Ollama" date: "Mar 18 2024" --- -# Getting Started with SP and Local Serving +# [ARCHIVED] Getting Started with SP and Local Serving ## Run your Model Locally diff --git a/frontend/src/content/guides/01-getting-started/model-launch.md b/frontend/src/content/guides/01-getting-started/model-launch.md index 9dbe327..49e961d 100644 --- a/frontend/src/content/guides/01-getting-started/model-launch.md +++ b/frontend/src/content/guides/01-getting-started/model-launch.md @@ -1,5 +1,5 @@ --- -title: "Launch Models with model-launch" +title: "Launch Models with model-launch 🚀" description: "Framework-agnostic SLURM job submission for distributed inference" date: "December 22 2025" --- diff --git a/frontend/src/pages/index.astro b/frontend/src/pages/index.astro index 031f61f..fcf53e6 100644 --- a/frontend/src/pages/index.astro +++ b/frontend/src/pages/index.astro @@ -54,10 +54,10 @@ const contributors = [ url: "https://www.cscs.ch/about/staff" }, { - name: "Robert Matthew Smith", + name: "Robert Smith", role: "System Expert", avatar: "/images/contributers/robert_matthew_smith.jpeg", - url: "#" + url: "https://www.linkedin.com/in/robmsmt" }, { name: "Xiaozhe Yao", @@ -81,15 +81,15 @@ const sponsors = [ }, { name: "ETH Zurich", - logo: "https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/ETH_Z%C3%BCrich_Logo_black.svg/1200px-ETH_Z%C3%BCrich_Logo_black.svg.png" + logo: "/images/sponsors/eth-zurich.svg" }, { name: "ETHZ AI Center", - logo: "https://ai.ethz.ch/_jcr_content/orgbox/image.imageformat.logo.1864120785.png" + logo: "/images/sponsors/eth-ai-center.png" }, { - name: "Langfuse", - logo: "https://langfuse.com/langfuse_logo.svg" + name: "EPFL", + logo: "/images/sponsors/epfl.png" } ]; --- @@ -177,7 +177,7 @@ const sponsors = [
- +