From 9ab5233265587455ef6ac4827a7f88d166c4606f Mon Sep 17 00:00:00 2001 From: Maxime Date: Mon, 30 Oct 2023 16:23:07 +0100 Subject: [PATCH] feat: how it works advanced fix typo --- pages/docs/_meta.json | 3 +- pages/docs/advanced/_meta.json | 5 +++ .../docs/{ => advanced}/getting-involved.mdx | 0 pages/docs/advanced/how-it-works.mdx | 37 ++++++++++++++++++ .../docs/{ => advanced}/project-structure.mdx | 0 public/images/architecture.png | Bin 0 -> 57056 bytes 6 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 pages/docs/advanced/_meta.json rename pages/docs/{ => advanced}/getting-involved.mdx (100%) create mode 100644 pages/docs/advanced/how-it-works.mdx rename pages/docs/{ => advanced}/project-structure.mdx (100%) create mode 100644 public/images/architecture.png diff --git a/pages/docs/_meta.json b/pages/docs/_meta.json index 383f97f..940342b 100644 --- a/pages/docs/_meta.json +++ b/pages/docs/_meta.json @@ -5,5 +5,6 @@ }, "index": "Introduction", "getting-started": "Getting Started", - "user-guide": "User Guide" + "user-guide": "User Guide", + "advanced": "Advanced" } diff --git a/pages/docs/advanced/_meta.json b/pages/docs/advanced/_meta.json new file mode 100644 index 0000000..e45808d --- /dev/null +++ b/pages/docs/advanced/_meta.json @@ -0,0 +1,5 @@ +{ + "project-structure": "Project structure", + "how-it-works": "How it works ?", + "getting-involved": "Getting Involved" +} diff --git a/pages/docs/getting-involved.mdx b/pages/docs/advanced/getting-involved.mdx similarity index 100% rename from pages/docs/getting-involved.mdx rename to pages/docs/advanced/getting-involved.mdx diff --git a/pages/docs/advanced/how-it-works.mdx b/pages/docs/advanced/how-it-works.mdx new file mode 100644 index 0000000..af432b3 --- /dev/null +++ b/pages/docs/advanced/how-it-works.mdx @@ -0,0 +1,37 @@ +import Image from 'next/image'; +import Architecture from '../../../public/images/architecture.png'; + +## How it works ? + +
+ Lambdo Architecture +
+ +Lambdo is structured into three main components: + +### 1. Initramfs CLI + +The CLI is responsible for generating initial RAM file systems (initramfs) +utilized by the virtual machines (VMs). + +### 2. API + +The API component consists of several parts: + +- **HTTP Server**: This server listens to user code execution requests, + processing incoming requests, and forwarding them to the VM manager. + +- **VM Manager**: The VM manager maintains a record of all previously launched + VMs and can initiate the creation of new VMs using "Lumper" if no VMs are + currently available. Additionally, it includes a gRPC server that allows VMs + to register themselves with the VM manager once they have started, as well as + a gRPC client for sending code execution requests to available VMs. + +### 3. Agent + +The agent runs inside the VMs and is comprised of both a gRPC client and server. +Within the agent, the runner engine takes care of tasks such as creating code +files, executing code, and retrieving the output. + +The VMs are launched using "Lumper" and are equipped with a Linux kernel built +along with the previously generated initramfs. diff --git a/pages/docs/project-structure.mdx b/pages/docs/advanced/project-structure.mdx similarity index 100% rename from pages/docs/project-structure.mdx rename to pages/docs/advanced/project-structure.mdx diff --git a/public/images/architecture.png b/public/images/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..89a4f4efc46424582ef63de2507b2ad5d3c2c197 GIT binary patch literal 57056 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 JDyr}Ie*s);RTKaK literal 0 HcmV?d00001