diff --git a/README.md b/README.md index 22325162..fa3fa614 100644 --- a/README.md +++ b/README.md @@ -9,82 +9,158 @@ Follow @rfgarcia

-## πŸ“œ Table of Contents -- [Overview](#overview) -- [Key Features](#key-features) -- [What You Can Do With It](#what-you-can-do-with-it) -- [Quickstarts](#quickstarts) -- [Contributing](#contributing) -- [License](#license) -- [Support](#support) +## What's Kernel? -## πŸ€™ Overview +Kernel provides sandboxed, ready-to-use Chrome browsers for browser automations and web agents. This repo powers our [hosted services](https://docs.onkernel.com/introduction). -Kernel provides sandboxed, ready-to-use Chrome browser environments for agentic workflows that need to access the Internet. `containers/docker/Dockerfile` and `unikernels/unikraft-cu` are the core infra that powers our hosted services. +Sign up [here](https://www.onkernel.com/)! -
+## Key Features +- Sandboxed Chrome browser that Chrome DevTools-based browser frameworks (Playwright, Puppeteer) can connect to +- Remote GUI access (live view streaming) for visual monitoring and remote control +- Configurable live view settings (read-only view, browser window dimensions) +- [Coming soon] Video replays of the browser's session [[1]](#notes) -β˜… [__Sign-up for the waitlist.__](https://onkernel.com) β˜… +## What You Can Do With It +- Run automated browser-based workflows +- Develop and test AI agents that use browsers +- Build custom tools that require controlled browser environments -
+## Implementation -![Chromium x Unikernel Demo](/static/images/unikernel-gh.gif) +This image can be used to run headful Chromium in a Docker container or with Unikraft unikernels. The unikernel implementation builds on top of the base Docker image and has the additional benefits of running on a unikernel: -## *️⃣ Key Features +- Automated standby / "sleep mode" when there is no network activity (consuming negligible resources when it does) +- When it goes into standby mode, the unikernel’s state gets snapshotted and can be restored exactly as it was when it went to sleep. This could be useful if you want to reuse a session’s state (browser auth cookies, interact with local files, browser settings, even the exact page and window zoom you were on). +- Extremely fast cold restarts (<20ms), which could be useful for any application that requires super low latency event handlers. -- Pre-configured Chrome browser that Chrome DevTools-based browser frameworks (Playwright, Puppeteer) can connect to -- GUI access for visual monitoring and remote control -- Anthropic's [Computer Use](https://github.com/anthropics/anthropic-quickstarts/tree/main/computer-use-demo) agent loop & chat interface baked in +## Demo + +https://github.com/user-attachments/assets/5888e823-5867-4c01-ad67-ec8989ba9573 + +## Running in Docker + +You can build and run the Dockerfile directly as a Docker container. + +```sh +cd images/chromium-headful +../../shared/build-server.sh bin +IMAGE=kernel-docker ./build-docker.sh +IMAGE=kernel-docker ENABLE_WEBRTC=true ./run-docker.sh +``` -## πŸ’‘ What You Can Do With It +## Running on a Unikernel -- Run automated browser-based workflows -- Develop and test AI agents that use browsers -- Build custom tools that require controlled browser environments +Alternatively, you can run the browser on a Unikraft unikernel. -## πŸ›œ Implementation +### 1. Install the Kraft CLI +`curl -sSfL https://get.kraftkit.sh | sh` -`containers/docker` and `unikernels/unikraft-cu` functionally do the same thing: -1. Pull from Anthropic's Computer Use reference implementation -2. Install Chromium -3. Expose ports so Chrome DevTools-based frameworks (Playwright, Puppeteer) can connect to the instance -4. Expose a remote GUI through noVNC +### 2. Add Unikraft Secret to Your CLI +`export UKC_METRO= and UKC_TOKEN=` -The unikernel implementation works the same as the Docker-only image but has the additional benefits of running on a unikernel: -- Automated standby / "sleep mode" when there isn't any network activity (consuming negligible resources when it does) -- When it goes into standby mode, the unikernel’s state gets snapshotted and can be restored exactly as it was when it went to sleep. This could be useful if you want to reuse a session’s state (browser auth cookies, interact with local files, browser settings, even the exact page and window zoom you were on). -- Extremely fast cold restarts (<20ms), which could be useful for any application that requires super low latency event handlers. +### 3. Build the image +`./build-unikernel.sh` -## πŸš€ Quickstarts +### 4. Run it +`./run-unikernel.sh` -- [Unikernel ✨](./unikernels/unikraft-cu/README.md) -- [Docker](./containers/docker/README.md) +When the deployment finishes successfully, the Kraft CLI will print out something like this: +``` +Deployed successfully! + β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€ name: kernel-cu + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€ uuid: 0cddb958... + β”œβ”€β”€β”€β”€β”€β”€β”€β”€ metro: + β”œβ”€β”€β”€β”€β”€β”€β”€β”€ state: starting + β”œβ”€β”€β”€β”€β”€β”€β”€ domain: https://.kraft.host + β”œβ”€β”€β”€β”€β”€β”€β”€β”€ image: onkernel/kernel-cu@sha256:8265f3f188... + β”œβ”€β”€β”€β”€β”€β”€β”€ memory: 8192 MiB + β”œβ”€β”€β”€β”€β”€β”€ service: + β”œβ”€ private fqdn: + β”œβ”€β”€β”€ private ip: + └───────── args: /wrapper.sh +``` -## πŸ§‘β€πŸ’» Demo +### Unikernel Notes -https://github.com/user-attachments/assets/c62b7ff8-9ba0-4463-9df4-e0dd7f1292ba +- The image requires at least 8gb of memory. +- To deploy the implementation with WebRTC desktop streaming enabled instead of noVNC: `ENABLE_WEBRTC=true NEKO_ICESERVERS=xxx ./run-unikernel.sh` +- Deploying to Unikraft Cloud requires the usage of a [TURN server](https://webrtc.org/getting-started/turn-server) when `ENABLE_WEBRTC=true`, as direct exposure of UDP ports is not currently supported. `NEKO_ICESERVERS`: Describes multiple STUN and TURN server that can be used by the ICEAgent to establish a connection with a peer. e.g. `[{"urls": ["turn:turn.example.com:19302", "stun:stun.example.com:19302"], "username": "name", "credential": "password"}, {"urls": ["stun:stun.example2.com:19302"]}]`. +- Various services (mutter, tint) take a few seconds to start-up. Once they do, the standby and restart time is extremely fast. +- The Unikraft deployment generates a url. This url is public, meaning _anyone_ can access the remote GUI if they have the url. Only use this for non-sensitive browser interactions, and delete the unikernel instance when you're done. +- You can call `browser.close()` to disconnect to the browser, and the unikernel will go into standby after network activity ends. You can then reconnect to the instance using CDP. `browser.close()` ends the websocket connection but doesn't actually close the browser. -## 🀝 Contributing +## Connect to the browser via Chrome DevTools Protocol -We welcome contributions to improve this example or add new ones! Please read our [contribution guidelines](./CONTRIBUTING.md) before submitting pull requests. +Port `9222` is exposed via `ncat`, allowing you to connect Chrome DevTools Protocol-based browser frameworks like Playwright and Puppeteer (and CDP-based SDKs like Browser Use). You can use these frameworks to drive the browser in the cloud. You can also disconnect from the browser and reconnect to it. -## 🫰 License +First, fetch the browser's CDP websocket endpoint: -See the [LICENSE](./LICENSE) file for details. +```typescript +const url = new URL("http://localhost:9222/json/version"); +const response = await fetch(url, { + headers: { + "Host": "" // Required if using a unikernel + } +}); +if (response.status !== 200) { + throw new Error( + `Failed to retrieve browser instance: ${ + response.statusText + } ${await response.text()}` + ); +} +// webSocketDebuggerUrl should look like: +// ws:///devtools/browser/06acd5ef-9961-431d-b6a0-86b99734f816 +const { webSocketDebuggerUrl } = await response.json(); +``` + +Then, connect a remote Playwright or Puppeteer client to it: + +```typescript +// Puppeteer +const browser = await puppeteer.connect({ + browserWSEndpoint: webSocketDebuggerUrl, +}); +// Playwright +const browser = await chromium.connectOverCDP(webSocketDebuggerUrl); +``` + +## Browser Remote GUI / Live View + +You can use the embedded live view to monitor and control the browser. The live view supports both read and write access to the browser. Both map to port `443`. -## πŸ… Join Our Team -We're hiring exceptional senior and staff backend engineers to work on the future of AI infrastructure. Full-time or contract-to-hire. Join a small team that punches well above its weight with minimal meetings and no bureaucracy. +- NoVNC: A VNC client. Read/write is supported. Set `ENABLE_WEBRTC=false` in `./run-docker.sh`. +- WebRTC: A WebRTC-based client. Read/write, window resizing, and copy/paste is supported. It's much faster than VNC. Available when `ENABLE_WEBRTC=true` is set. -Locations: San Francisco, Cincinnati, or NYC. +### Notes +- Audio streaming in the WebRTC implementation is currently non-functional and needs to be fixed. +- The live view is read/write by default. You can set it to read-only by adding `-e ENABLE_READONLY_VIEW=true \` in `docker run`. +- Replays are currently a work in progress. There is some source code for it throughout the repo. + +## Documentation + +This repo powers our managed [browser infrastructure](https://docs.onkernel.com). + +## Contributing + +Please read our [contribution guidelines](./CONTRIBUTING.md) before submitting pull requests or issues. + +## License + +See the [LICENSE](./LICENSE) file for details. -Things we're working on: serverless, containers/vms/unikernels, streaming, SDKs, CLIs. +## Support -See our [job posts](https://docs.onkernel.com/careers/intro) for more details. +For issues, questions, or feedback, please [open an issue](https://github.com/onkernel/kernel-images/issues) on this repository. You can also join our [Discord](https://discord.gg/FBrveQRcud). -## πŸ„ Support +## Colophon -For issues, questions, or feedback, please [open an issue](https://github.com/onkernel/kernel-images/issues) on this repository. +- Our WebRTC implementation is adapted from [Neko](https://github.com/m1k1o/neko). +- Thank you to [xonkernel](https://github.com/xonkernel) for leading the development of our WebRTC live view. +- Thank you to the [Unikraft Cloud](https://unikraft.cloud/) team for your help with unikernels. -To learn more about our hosted services, [join our waitlist](https://onkernel.com) and our [Discord](https://discord.gg/FBrveQRcud). +Made with ❀️ by the [Kernel team](https://www.onkernel.com). \ No newline at end of file diff --git a/unikernels/unikraft-cu/.gitignore b/images/chromium-headful/.gitignore similarity index 100% rename from unikernels/unikraft-cu/.gitignore rename to images/chromium-headful/.gitignore diff --git a/unikernels/unikraft-cu/Dockerfile b/images/chromium-headful/Dockerfile similarity index 99% rename from unikernels/unikraft-cu/Dockerfile rename to images/chromium-headful/Dockerfile index c00157dc..2417149d 100644 --- a/unikernels/unikraft-cu/Dockerfile +++ b/images/chromium-headful/Dockerfile @@ -138,8 +138,8 @@ RUN git clone --branch v1.5.0 https://github.com/novnc/noVNC.git /opt/noVNC && \ # setup desktop env & app ENV DISPLAY_NUM=1 -ENV HEIGHT=768 -ENV WIDTH=1024 +ENV HEIGHT=1080 +ENV WIDTH=1920 ENV WITHDOCKER=true COPY xorg.conf /etc/neko/xorg.conf diff --git a/unikernels/unikraft-cu/Kraftfile b/images/chromium-headful/Kraftfile similarity index 100% rename from unikernels/unikraft-cu/Kraftfile rename to images/chromium-headful/Kraftfile diff --git a/unikernels/unikraft-cu/build-docker.sh b/images/chromium-headful/build-docker.sh similarity index 100% rename from unikernels/unikraft-cu/build-docker.sh rename to images/chromium-headful/build-docker.sh diff --git a/unikernels/unikraft-cu/build-unikernel.sh b/images/chromium-headful/build-unikernel.sh similarity index 100% rename from unikernels/unikraft-cu/build-unikernel.sh rename to images/chromium-headful/build-unikernel.sh diff --git a/unikernels/unikraft-cu/client/.babelrc b/images/chromium-headful/client/.babelrc similarity index 100% rename from unikernels/unikraft-cu/client/.babelrc rename to images/chromium-headful/client/.babelrc diff --git a/unikernels/unikraft-cu/client/.browserslistrc b/images/chromium-headful/client/.browserslistrc similarity index 100% rename from unikernels/unikraft-cu/client/.browserslistrc rename to images/chromium-headful/client/.browserslistrc diff --git a/unikernels/unikraft-cu/client/.editorconfig b/images/chromium-headful/client/.editorconfig similarity index 100% rename from unikernels/unikraft-cu/client/.editorconfig rename to images/chromium-headful/client/.editorconfig diff --git a/unikernels/unikraft-cu/client/.eslintrc b/images/chromium-headful/client/.eslintrc similarity index 100% rename from unikernels/unikraft-cu/client/.eslintrc rename to images/chromium-headful/client/.eslintrc diff --git a/unikernels/unikraft-cu/client/.prettierrc b/images/chromium-headful/client/.prettierrc similarity index 100% rename from unikernels/unikraft-cu/client/.prettierrc rename to images/chromium-headful/client/.prettierrc diff --git a/unikernels/unikraft-cu/client/.vscode/settings.json b/images/chromium-headful/client/.vscode/settings.json similarity index 100% rename from unikernels/unikraft-cu/client/.vscode/settings.json rename to images/chromium-headful/client/.vscode/settings.json diff --git a/unikernels/unikraft-cu/client/Dockerfile b/images/chromium-headful/client/Dockerfile similarity index 100% rename from unikernels/unikraft-cu/client/Dockerfile rename to images/chromium-headful/client/Dockerfile diff --git a/unikernels/unikraft-cu/client/dev/build b/images/chromium-headful/client/dev/build similarity index 100% rename from unikernels/unikraft-cu/client/dev/build rename to images/chromium-headful/client/dev/build diff --git a/unikernels/unikraft-cu/client/dev/exec b/images/chromium-headful/client/dev/exec similarity index 100% rename from unikernels/unikraft-cu/client/dev/exec rename to images/chromium-headful/client/dev/exec diff --git a/unikernels/unikraft-cu/client/dev/npm b/images/chromium-headful/client/dev/npm similarity index 100% rename from unikernels/unikraft-cu/client/dev/npm rename to images/chromium-headful/client/dev/npm diff --git a/unikernels/unikraft-cu/client/dev/serve b/images/chromium-headful/client/dev/serve similarity index 100% rename from unikernels/unikraft-cu/client/dev/serve rename to images/chromium-headful/client/dev/serve diff --git a/unikernels/unikraft-cu/client/package-lock.json b/images/chromium-headful/client/package-lock.json similarity index 100% rename from unikernels/unikraft-cu/client/package-lock.json rename to images/chromium-headful/client/package-lock.json diff --git a/unikernels/unikraft-cu/client/package.json b/images/chromium-headful/client/package.json similarity index 100% rename from unikernels/unikraft-cu/client/package.json rename to images/chromium-headful/client/package.json diff --git a/unikernels/unikraft-cu/client/public/browserconfig.xml b/images/chromium-headful/client/public/browserconfig.xml similarity index 100% rename from unikernels/unikraft-cu/client/public/browserconfig.xml rename to images/chromium-headful/client/public/browserconfig.xml diff --git a/unikernels/unikraft-cu/client/public/chat.mp3 b/images/chromium-headful/client/public/chat.mp3 similarity index 100% rename from unikernels/unikraft-cu/client/public/chat.mp3 rename to images/chromium-headful/client/public/chat.mp3 diff --git a/unikernels/unikraft-cu/client/public/emoji.json b/images/chromium-headful/client/public/emoji.json similarity index 100% rename from unikernels/unikraft-cu/client/public/emoji.json rename to images/chromium-headful/client/public/emoji.json diff --git a/images/chromium-headful/client/public/favicon-16x16.png b/images/chromium-headful/client/public/favicon-16x16.png new file mode 100644 index 00000000..31813ab3 Binary files /dev/null and b/images/chromium-headful/client/public/favicon-16x16.png differ diff --git a/images/chromium-headful/client/public/favicon-32x32.png b/images/chromium-headful/client/public/favicon-32x32.png new file mode 100644 index 00000000..ce537031 Binary files /dev/null and b/images/chromium-headful/client/public/favicon-32x32.png differ diff --git a/unikernels/unikraft-cu/client/public/index.html b/images/chromium-headful/client/public/index.html similarity index 100% rename from unikernels/unikraft-cu/client/public/index.html rename to images/chromium-headful/client/public/index.html diff --git a/unikernels/unikraft-cu/client/public/keyboard_layouts.json b/images/chromium-headful/client/public/keyboard_layouts.json similarity index 100% rename from unikernels/unikraft-cu/client/public/keyboard_layouts.json rename to images/chromium-headful/client/public/keyboard_layouts.json diff --git a/unikernels/unikraft-cu/client/public/site.webmanifest b/images/chromium-headful/client/public/site.webmanifest similarity index 100% rename from unikernels/unikraft-cu/client/public/site.webmanifest rename to images/chromium-headful/client/public/site.webmanifest diff --git a/unikernels/unikraft-cu/client/src/app.vue b/images/chromium-headful/client/src/app.vue similarity index 100% rename from unikernels/unikraft-cu/client/src/app.vue rename to images/chromium-headful/client/src/app.vue diff --git a/unikernels/unikraft-cu/client/src/assets/images/emoji/neko.png b/images/chromium-headful/client/src/assets/images/emoji/neko.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emoji/neko.png rename to images/chromium-headful/client/src/assets/images/emoji/neko.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f389.png b/images/chromium-headful/client/src/assets/images/emote/1f389.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f389.png rename to images/chromium-headful/client/src/assets/images/emote/1f389.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f389.svg b/images/chromium-headful/client/src/assets/images/emote/1f389.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f389.svg rename to images/chromium-headful/client/src/assets/images/emote/1f389.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f44a.png b/images/chromium-headful/client/src/assets/images/emote/1f44a.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f44a.png rename to images/chromium-headful/client/src/assets/images/emote/1f44a.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f44a.svg b/images/chromium-headful/client/src/assets/images/emote/1f44a.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f44a.svg rename to images/chromium-headful/client/src/assets/images/emote/1f44a.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f44b.png b/images/chromium-headful/client/src/assets/images/emote/1f44b.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f44b.png rename to images/chromium-headful/client/src/assets/images/emote/1f44b.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f44b.svg b/images/chromium-headful/client/src/assets/images/emote/1f44b.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f44b.svg rename to images/chromium-headful/client/src/assets/images/emote/1f44b.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f44c.png b/images/chromium-headful/client/src/assets/images/emote/1f44c.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f44c.png rename to images/chromium-headful/client/src/assets/images/emote/1f44c.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f44c.svg b/images/chromium-headful/client/src/assets/images/emote/1f44c.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f44c.svg rename to images/chromium-headful/client/src/assets/images/emote/1f44c.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f44d.png b/images/chromium-headful/client/src/assets/images/emote/1f44d.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f44d.png rename to images/chromium-headful/client/src/assets/images/emote/1f44d.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f44d.svg b/images/chromium-headful/client/src/assets/images/emote/1f44d.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f44d.svg rename to images/chromium-headful/client/src/assets/images/emote/1f44d.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f44f.png b/images/chromium-headful/client/src/assets/images/emote/1f44f.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f44f.png rename to images/chromium-headful/client/src/assets/images/emote/1f44f.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f44f.svg b/images/chromium-headful/client/src/assets/images/emote/1f44f.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f44f.svg rename to images/chromium-headful/client/src/assets/images/emote/1f44f.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f4a2.png b/images/chromium-headful/client/src/assets/images/emote/1f4a2.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f4a2.png rename to images/chromium-headful/client/src/assets/images/emote/1f4a2.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f4a2.svg b/images/chromium-headful/client/src/assets/images/emote/1f4a2.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f4a2.svg rename to images/chromium-headful/client/src/assets/images/emote/1f4a2.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f4a3.png b/images/chromium-headful/client/src/assets/images/emote/1f4a3.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f4a3.png rename to images/chromium-headful/client/src/assets/images/emote/1f4a3.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f4a3.svg b/images/chromium-headful/client/src/assets/images/emote/1f4a3.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f4a3.svg rename to images/chromium-headful/client/src/assets/images/emote/1f4a3.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f4a4.png b/images/chromium-headful/client/src/assets/images/emote/1f4a4.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f4a4.png rename to images/chromium-headful/client/src/assets/images/emote/1f4a4.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f4a4.svg b/images/chromium-headful/client/src/assets/images/emote/1f4a4.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f4a4.svg rename to images/chromium-headful/client/src/assets/images/emote/1f4a4.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f4a5.png b/images/chromium-headful/client/src/assets/images/emote/1f4a5.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f4a5.png rename to images/chromium-headful/client/src/assets/images/emote/1f4a5.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f4a5.svg b/images/chromium-headful/client/src/assets/images/emote/1f4a5.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f4a5.svg rename to images/chromium-headful/client/src/assets/images/emote/1f4a5.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f4a6.png b/images/chromium-headful/client/src/assets/images/emote/1f4a6.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f4a6.png rename to images/chromium-headful/client/src/assets/images/emote/1f4a6.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f4a6.svg b/images/chromium-headful/client/src/assets/images/emote/1f4a6.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f4a6.svg rename to images/chromium-headful/client/src/assets/images/emote/1f4a6.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f4a9.png b/images/chromium-headful/client/src/assets/images/emote/1f4a9.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f4a9.png rename to images/chromium-headful/client/src/assets/images/emote/1f4a9.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f4a9.svg b/images/chromium-headful/client/src/assets/images/emote/1f4a9.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f4a9.svg rename to images/chromium-headful/client/src/assets/images/emote/1f4a9.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f4af.png b/images/chromium-headful/client/src/assets/images/emote/1f4af.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f4af.png rename to images/chromium-headful/client/src/assets/images/emote/1f4af.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f4af.svg b/images/chromium-headful/client/src/assets/images/emote/1f4af.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f4af.svg rename to images/chromium-headful/client/src/assets/images/emote/1f4af.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f525.png b/images/chromium-headful/client/src/assets/images/emote/1f525.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f525.png rename to images/chromium-headful/client/src/assets/images/emote/1f525.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f525.svg b/images/chromium-headful/client/src/assets/images/emote/1f525.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f525.svg rename to images/chromium-headful/client/src/assets/images/emote/1f525.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f60b.png b/images/chromium-headful/client/src/assets/images/emote/1f60b.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f60b.png rename to images/chromium-headful/client/src/assets/images/emote/1f60b.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f60b.svg b/images/chromium-headful/client/src/assets/images/emote/1f60b.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f60b.svg rename to images/chromium-headful/client/src/assets/images/emote/1f60b.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f60d.png b/images/chromium-headful/client/src/assets/images/emote/1f60d.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f60d.png rename to images/chromium-headful/client/src/assets/images/emote/1f60d.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f60d.svg b/images/chromium-headful/client/src/assets/images/emote/1f60d.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f60d.svg rename to images/chromium-headful/client/src/assets/images/emote/1f60d.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f60e.png b/images/chromium-headful/client/src/assets/images/emote/1f60e.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f60e.png rename to images/chromium-headful/client/src/assets/images/emote/1f60e.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f60e.svg b/images/chromium-headful/client/src/assets/images/emote/1f60e.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f60e.svg rename to images/chromium-headful/client/src/assets/images/emote/1f60e.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f60f.png b/images/chromium-headful/client/src/assets/images/emote/1f60f.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f60f.png rename to images/chromium-headful/client/src/assets/images/emote/1f60f.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f60f.svg b/images/chromium-headful/client/src/assets/images/emote/1f60f.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f60f.svg rename to images/chromium-headful/client/src/assets/images/emote/1f60f.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f611.png b/images/chromium-headful/client/src/assets/images/emote/1f611.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f611.png rename to images/chromium-headful/client/src/assets/images/emote/1f611.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f611.svg b/images/chromium-headful/client/src/assets/images/emote/1f611.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f611.svg rename to images/chromium-headful/client/src/assets/images/emote/1f611.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f61f.png b/images/chromium-headful/client/src/assets/images/emote/1f61f.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f61f.png rename to images/chromium-headful/client/src/assets/images/emote/1f61f.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f61f.svg b/images/chromium-headful/client/src/assets/images/emote/1f61f.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f61f.svg rename to images/chromium-headful/client/src/assets/images/emote/1f61f.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f624.png b/images/chromium-headful/client/src/assets/images/emote/1f624.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f624.png rename to images/chromium-headful/client/src/assets/images/emote/1f624.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f624.svg b/images/chromium-headful/client/src/assets/images/emote/1f624.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f624.svg rename to images/chromium-headful/client/src/assets/images/emote/1f624.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f628.png b/images/chromium-headful/client/src/assets/images/emote/1f628.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f628.png rename to images/chromium-headful/client/src/assets/images/emote/1f628.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f628.svg b/images/chromium-headful/client/src/assets/images/emote/1f628.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f628.svg rename to images/chromium-headful/client/src/assets/images/emote/1f628.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f62c.png b/images/chromium-headful/client/src/assets/images/emote/1f62c.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f62c.png rename to images/chromium-headful/client/src/assets/images/emote/1f62c.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f62c.svg b/images/chromium-headful/client/src/assets/images/emote/1f62c.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f62c.svg rename to images/chromium-headful/client/src/assets/images/emote/1f62c.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f62d.png b/images/chromium-headful/client/src/assets/images/emote/1f62d.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f62d.png rename to images/chromium-headful/client/src/assets/images/emote/1f62d.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f62d.svg b/images/chromium-headful/client/src/assets/images/emote/1f62d.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f62d.svg rename to images/chromium-headful/client/src/assets/images/emote/1f62d.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f62e.png b/images/chromium-headful/client/src/assets/images/emote/1f62e.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f62e.png rename to images/chromium-headful/client/src/assets/images/emote/1f62e.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f62e.svg b/images/chromium-headful/client/src/assets/images/emote/1f62e.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f62e.svg rename to images/chromium-headful/client/src/assets/images/emote/1f62e.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f631.png b/images/chromium-headful/client/src/assets/images/emote/1f631.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f631.png rename to images/chromium-headful/client/src/assets/images/emote/1f631.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f631.svg b/images/chromium-headful/client/src/assets/images/emote/1f631.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f631.svg rename to images/chromium-headful/client/src/assets/images/emote/1f631.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f634.png b/images/chromium-headful/client/src/assets/images/emote/1f634.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f634.png rename to images/chromium-headful/client/src/assets/images/emote/1f634.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f634.svg b/images/chromium-headful/client/src/assets/images/emote/1f634.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f634.svg rename to images/chromium-headful/client/src/assets/images/emote/1f634.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f635.png b/images/chromium-headful/client/src/assets/images/emote/1f635.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f635.png rename to images/chromium-headful/client/src/assets/images/emote/1f635.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f635.svg b/images/chromium-headful/client/src/assets/images/emote/1f635.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f635.svg rename to images/chromium-headful/client/src/assets/images/emote/1f635.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f642.png b/images/chromium-headful/client/src/assets/images/emote/1f642.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f642.png rename to images/chromium-headful/client/src/assets/images/emote/1f642.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f642.svg b/images/chromium-headful/client/src/assets/images/emote/1f642.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f642.svg rename to images/chromium-headful/client/src/assets/images/emote/1f642.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f644.png b/images/chromium-headful/client/src/assets/images/emote/1f644.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f644.png rename to images/chromium-headful/client/src/assets/images/emote/1f644.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f644.svg b/images/chromium-headful/client/src/assets/images/emote/1f644.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f644.svg rename to images/chromium-headful/client/src/assets/images/emote/1f644.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f64f.png b/images/chromium-headful/client/src/assets/images/emote/1f64f.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f64f.png rename to images/chromium-headful/client/src/assets/images/emote/1f64f.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f64f.svg b/images/chromium-headful/client/src/assets/images/emote/1f64f.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f64f.svg rename to images/chromium-headful/client/src/assets/images/emote/1f64f.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f6a8.png b/images/chromium-headful/client/src/assets/images/emote/1f6a8.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f6a8.png rename to images/chromium-headful/client/src/assets/images/emote/1f6a8.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f6a8.svg b/images/chromium-headful/client/src/assets/images/emote/1f6a8.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f6a8.svg rename to images/chromium-headful/client/src/assets/images/emote/1f6a8.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f914.png b/images/chromium-headful/client/src/assets/images/emote/1f914.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f914.png rename to images/chromium-headful/client/src/assets/images/emote/1f914.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f914.svg b/images/chromium-headful/client/src/assets/images/emote/1f914.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f914.svg rename to images/chromium-headful/client/src/assets/images/emote/1f914.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f921.png b/images/chromium-headful/client/src/assets/images/emote/1f921.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f921.png rename to images/chromium-headful/client/src/assets/images/emote/1f921.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f921.svg b/images/chromium-headful/client/src/assets/images/emote/1f921.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f921.svg rename to images/chromium-headful/client/src/assets/images/emote/1f921.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f922.png b/images/chromium-headful/client/src/assets/images/emote/1f922.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f922.png rename to images/chromium-headful/client/src/assets/images/emote/1f922.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f922.svg b/images/chromium-headful/client/src/assets/images/emote/1f922.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f922.svg rename to images/chromium-headful/client/src/assets/images/emote/1f922.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f923.png b/images/chromium-headful/client/src/assets/images/emote/1f923.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f923.png rename to images/chromium-headful/client/src/assets/images/emote/1f923.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f923.svg b/images/chromium-headful/client/src/assets/images/emote/1f923.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f923.svg rename to images/chromium-headful/client/src/assets/images/emote/1f923.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f924.png b/images/chromium-headful/client/src/assets/images/emote/1f924.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f924.png rename to images/chromium-headful/client/src/assets/images/emote/1f924.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f924.svg b/images/chromium-headful/client/src/assets/images/emote/1f924.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f924.svg rename to images/chromium-headful/client/src/assets/images/emote/1f924.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f927.png b/images/chromium-headful/client/src/assets/images/emote/1f927.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f927.png rename to images/chromium-headful/client/src/assets/images/emote/1f927.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f927.svg b/images/chromium-headful/client/src/assets/images/emote/1f927.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f927.svg rename to images/chromium-headful/client/src/assets/images/emote/1f927.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f928.png b/images/chromium-headful/client/src/assets/images/emote/1f928.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f928.png rename to images/chromium-headful/client/src/assets/images/emote/1f928.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f928.svg b/images/chromium-headful/client/src/assets/images/emote/1f928.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f928.svg rename to images/chromium-headful/client/src/assets/images/emote/1f928.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f92b.png b/images/chromium-headful/client/src/assets/images/emote/1f92b.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f92b.png rename to images/chromium-headful/client/src/assets/images/emote/1f92b.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f92b.svg b/images/chromium-headful/client/src/assets/images/emote/1f92b.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f92b.svg rename to images/chromium-headful/client/src/assets/images/emote/1f92b.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f92c.png b/images/chromium-headful/client/src/assets/images/emote/1f92c.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f92c.png rename to images/chromium-headful/client/src/assets/images/emote/1f92c.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f92c.svg b/images/chromium-headful/client/src/assets/images/emote/1f92c.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f92c.svg rename to images/chromium-headful/client/src/assets/images/emote/1f92c.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f973.png b/images/chromium-headful/client/src/assets/images/emote/1f973.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f973.png rename to images/chromium-headful/client/src/assets/images/emote/1f973.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f973.svg b/images/chromium-headful/client/src/assets/images/emote/1f973.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f973.svg rename to images/chromium-headful/client/src/assets/images/emote/1f973.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f974.png b/images/chromium-headful/client/src/assets/images/emote/1f974.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f974.png rename to images/chromium-headful/client/src/assets/images/emote/1f974.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f974.svg b/images/chromium-headful/client/src/assets/images/emote/1f974.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f974.svg rename to images/chromium-headful/client/src/assets/images/emote/1f974.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f975.png b/images/chromium-headful/client/src/assets/images/emote/1f975.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f975.png rename to images/chromium-headful/client/src/assets/images/emote/1f975.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f975.svg b/images/chromium-headful/client/src/assets/images/emote/1f975.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f975.svg rename to images/chromium-headful/client/src/assets/images/emote/1f975.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f976.png b/images/chromium-headful/client/src/assets/images/emote/1f976.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f976.png rename to images/chromium-headful/client/src/assets/images/emote/1f976.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/1f976.svg b/images/chromium-headful/client/src/assets/images/emote/1f976.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/1f976.svg rename to images/chromium-headful/client/src/assets/images/emote/1f976.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/2639.png b/images/chromium-headful/client/src/assets/images/emote/2639.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/2639.png rename to images/chromium-headful/client/src/assets/images/emote/2639.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/2639.svg b/images/chromium-headful/client/src/assets/images/emote/2639.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/2639.svg rename to images/chromium-headful/client/src/assets/images/emote/2639.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/263a.png b/images/chromium-headful/client/src/assets/images/emote/263a.png similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/263a.png rename to images/chromium-headful/client/src/assets/images/emote/263a.png diff --git a/unikernels/unikraft-cu/client/src/assets/images/emote/263a.svg b/images/chromium-headful/client/src/assets/images/emote/263a.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/emote/263a.svg rename to images/chromium-headful/client/src/assets/images/emote/263a.svg diff --git a/unikernels/unikraft-cu/client/src/assets/images/logo.svg b/images/chromium-headful/client/src/assets/images/logo.svg similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/images/logo.svg rename to images/chromium-headful/client/src/assets/images/logo.svg diff --git a/unikernels/unikraft-cu/client/src/assets/styles/_reset.scss b/images/chromium-headful/client/src/assets/styles/_reset.scss similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/styles/_reset.scss rename to images/chromium-headful/client/src/assets/styles/_reset.scss diff --git a/unikernels/unikraft-cu/client/src/assets/styles/_variables.scss b/images/chromium-headful/client/src/assets/styles/_variables.scss similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/styles/_variables.scss rename to images/chromium-headful/client/src/assets/styles/_variables.scss diff --git a/unikernels/unikraft-cu/client/src/assets/styles/fonts/whitney-300.woff b/images/chromium-headful/client/src/assets/styles/fonts/whitney-300.woff similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/styles/fonts/whitney-300.woff rename to images/chromium-headful/client/src/assets/styles/fonts/whitney-300.woff diff --git a/unikernels/unikraft-cu/client/src/assets/styles/fonts/whitney-400.woff b/images/chromium-headful/client/src/assets/styles/fonts/whitney-400.woff similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/styles/fonts/whitney-400.woff rename to images/chromium-headful/client/src/assets/styles/fonts/whitney-400.woff diff --git a/unikernels/unikraft-cu/client/src/assets/styles/fonts/whitney-500.woff b/images/chromium-headful/client/src/assets/styles/fonts/whitney-500.woff similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/styles/fonts/whitney-500.woff rename to images/chromium-headful/client/src/assets/styles/fonts/whitney-500.woff diff --git a/unikernels/unikraft-cu/client/src/assets/styles/fonts/whitney-600.woff b/images/chromium-headful/client/src/assets/styles/fonts/whitney-600.woff similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/styles/fonts/whitney-600.woff rename to images/chromium-headful/client/src/assets/styles/fonts/whitney-600.woff diff --git a/unikernels/unikraft-cu/client/src/assets/styles/fonts/whitney-700.woff b/images/chromium-headful/client/src/assets/styles/fonts/whitney-700.woff similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/styles/fonts/whitney-700.woff rename to images/chromium-headful/client/src/assets/styles/fonts/whitney-700.woff diff --git a/unikernels/unikraft-cu/client/src/assets/styles/main.scss b/images/chromium-headful/client/src/assets/styles/main.scss similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/styles/main.scss rename to images/chromium-headful/client/src/assets/styles/main.scss diff --git a/unikernels/unikraft-cu/client/src/assets/styles/vendor/_emoji.scss b/images/chromium-headful/client/src/assets/styles/vendor/_emoji.scss similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/styles/vendor/_emoji.scss rename to images/chromium-headful/client/src/assets/styles/vendor/_emoji.scss diff --git a/unikernels/unikraft-cu/client/src/assets/styles/vendor/_emote.scss b/images/chromium-headful/client/src/assets/styles/vendor/_emote.scss similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/styles/vendor/_emote.scss rename to images/chromium-headful/client/src/assets/styles/vendor/_emote.scss diff --git a/unikernels/unikraft-cu/client/src/assets/styles/vendor/_font-awesome.scss b/images/chromium-headful/client/src/assets/styles/vendor/_font-awesome.scss similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/styles/vendor/_font-awesome.scss rename to images/chromium-headful/client/src/assets/styles/vendor/_font-awesome.scss diff --git a/unikernels/unikraft-cu/client/src/assets/styles/vendor/_font-whitney.scss b/images/chromium-headful/client/src/assets/styles/vendor/_font-whitney.scss similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/styles/vendor/_font-whitney.scss rename to images/chromium-headful/client/src/assets/styles/vendor/_font-whitney.scss diff --git a/unikernels/unikraft-cu/client/src/assets/styles/vendor/_github.scss b/images/chromium-headful/client/src/assets/styles/vendor/_github.scss similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/styles/vendor/_github.scss rename to images/chromium-headful/client/src/assets/styles/vendor/_github.scss diff --git a/unikernels/unikraft-cu/client/src/assets/styles/vendor/_swal.scss b/images/chromium-headful/client/src/assets/styles/vendor/_swal.scss similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/styles/vendor/_swal.scss rename to images/chromium-headful/client/src/assets/styles/vendor/_swal.scss diff --git a/unikernels/unikraft-cu/client/src/assets/styles/vendor/_tooltip.scss b/images/chromium-headful/client/src/assets/styles/vendor/_tooltip.scss similarity index 100% rename from unikernels/unikraft-cu/client/src/assets/styles/vendor/_tooltip.scss rename to images/chromium-headful/client/src/assets/styles/vendor/_tooltip.scss diff --git a/unikernels/unikraft-cu/client/src/components/about.vue b/images/chromium-headful/client/src/components/about.vue similarity index 100% rename from unikernels/unikraft-cu/client/src/components/about.vue rename to images/chromium-headful/client/src/components/about.vue diff --git a/unikernels/unikraft-cu/client/src/components/avatar.vue b/images/chromium-headful/client/src/components/avatar.vue similarity index 100% rename from unikernels/unikraft-cu/client/src/components/avatar.vue rename to images/chromium-headful/client/src/components/avatar.vue diff --git a/unikernels/unikraft-cu/client/src/components/chat.vue b/images/chromium-headful/client/src/components/chat.vue similarity index 100% rename from unikernels/unikraft-cu/client/src/components/chat.vue rename to images/chromium-headful/client/src/components/chat.vue diff --git a/unikernels/unikraft-cu/client/src/components/clipboard.vue b/images/chromium-headful/client/src/components/clipboard.vue similarity index 100% rename from unikernels/unikraft-cu/client/src/components/clipboard.vue rename to images/chromium-headful/client/src/components/clipboard.vue diff --git a/unikernels/unikraft-cu/client/src/components/connect.vue b/images/chromium-headful/client/src/components/connect.vue similarity index 100% rename from unikernels/unikraft-cu/client/src/components/connect.vue rename to images/chromium-headful/client/src/components/connect.vue diff --git a/unikernels/unikraft-cu/client/src/components/context.vue b/images/chromium-headful/client/src/components/context.vue similarity index 100% rename from unikernels/unikraft-cu/client/src/components/context.vue rename to images/chromium-headful/client/src/components/context.vue diff --git a/unikernels/unikraft-cu/client/src/components/controls.vue b/images/chromium-headful/client/src/components/controls.vue similarity index 100% rename from unikernels/unikraft-cu/client/src/components/controls.vue rename to images/chromium-headful/client/src/components/controls.vue diff --git a/unikernels/unikraft-cu/client/src/components/emoji.vue b/images/chromium-headful/client/src/components/emoji.vue similarity index 100% rename from unikernels/unikraft-cu/client/src/components/emoji.vue rename to images/chromium-headful/client/src/components/emoji.vue diff --git a/unikernels/unikraft-cu/client/src/components/emote.vue b/images/chromium-headful/client/src/components/emote.vue similarity index 100% rename from unikernels/unikraft-cu/client/src/components/emote.vue rename to images/chromium-headful/client/src/components/emote.vue diff --git a/unikernels/unikraft-cu/client/src/components/emotes.vue b/images/chromium-headful/client/src/components/emotes.vue similarity index 100% rename from unikernels/unikraft-cu/client/src/components/emotes.vue rename to images/chromium-headful/client/src/components/emotes.vue diff --git a/unikernels/unikraft-cu/client/src/components/files.vue b/images/chromium-headful/client/src/components/files.vue similarity index 100% rename from unikernels/unikraft-cu/client/src/components/files.vue rename to images/chromium-headful/client/src/components/files.vue diff --git a/unikernels/unikraft-cu/client/src/components/header.vue b/images/chromium-headful/client/src/components/header.vue similarity index 100% rename from unikernels/unikraft-cu/client/src/components/header.vue rename to images/chromium-headful/client/src/components/header.vue diff --git a/unikernels/unikraft-cu/client/src/components/markdown.ts b/images/chromium-headful/client/src/components/markdown.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/components/markdown.ts rename to images/chromium-headful/client/src/components/markdown.ts diff --git a/unikernels/unikraft-cu/client/src/components/members.vue b/images/chromium-headful/client/src/components/members.vue similarity index 100% rename from unikernels/unikraft-cu/client/src/components/members.vue rename to images/chromium-headful/client/src/components/members.vue diff --git a/unikernels/unikraft-cu/client/src/components/menu.vue b/images/chromium-headful/client/src/components/menu.vue similarity index 100% rename from unikernels/unikraft-cu/client/src/components/menu.vue rename to images/chromium-headful/client/src/components/menu.vue diff --git a/unikernels/unikraft-cu/client/src/components/resolution.vue b/images/chromium-headful/client/src/components/resolution.vue similarity index 100% rename from unikernels/unikraft-cu/client/src/components/resolution.vue rename to images/chromium-headful/client/src/components/resolution.vue diff --git a/unikernels/unikraft-cu/client/src/components/settings.vue b/images/chromium-headful/client/src/components/settings.vue similarity index 100% rename from unikernels/unikraft-cu/client/src/components/settings.vue rename to images/chromium-headful/client/src/components/settings.vue diff --git a/unikernels/unikraft-cu/client/src/components/side.vue b/images/chromium-headful/client/src/components/side.vue similarity index 100% rename from unikernels/unikraft-cu/client/src/components/side.vue rename to images/chromium-headful/client/src/components/side.vue diff --git a/unikernels/unikraft-cu/client/src/components/unsupported.vue b/images/chromium-headful/client/src/components/unsupported.vue similarity index 100% rename from unikernels/unikraft-cu/client/src/components/unsupported.vue rename to images/chromium-headful/client/src/components/unsupported.vue diff --git a/unikernels/unikraft-cu/client/src/components/video.vue b/images/chromium-headful/client/src/components/video.vue similarity index 100% rename from unikernels/unikraft-cu/client/src/components/video.vue rename to images/chromium-headful/client/src/components/video.vue diff --git a/unikernels/unikraft-cu/client/src/lib.ts b/images/chromium-headful/client/src/lib.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/lib.ts rename to images/chromium-headful/client/src/lib.ts diff --git a/unikernels/unikraft-cu/client/src/locale/de-de.ts b/images/chromium-headful/client/src/locale/de-de.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/locale/de-de.ts rename to images/chromium-headful/client/src/locale/de-de.ts diff --git a/unikernels/unikraft-cu/client/src/locale/en-us.ts b/images/chromium-headful/client/src/locale/en-us.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/locale/en-us.ts rename to images/chromium-headful/client/src/locale/en-us.ts diff --git a/unikernels/unikraft-cu/client/src/locale/es-sp.ts b/images/chromium-headful/client/src/locale/es-sp.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/locale/es-sp.ts rename to images/chromium-headful/client/src/locale/es-sp.ts diff --git a/unikernels/unikraft-cu/client/src/locale/fi-fi.ts b/images/chromium-headful/client/src/locale/fi-fi.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/locale/fi-fi.ts rename to images/chromium-headful/client/src/locale/fi-fi.ts diff --git a/unikernels/unikraft-cu/client/src/locale/fr-fr.ts b/images/chromium-headful/client/src/locale/fr-fr.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/locale/fr-fr.ts rename to images/chromium-headful/client/src/locale/fr-fr.ts diff --git a/unikernels/unikraft-cu/client/src/locale/index.ts b/images/chromium-headful/client/src/locale/index.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/locale/index.ts rename to images/chromium-headful/client/src/locale/index.ts diff --git a/unikernels/unikraft-cu/client/src/locale/ja-jp.ts b/images/chromium-headful/client/src/locale/ja-jp.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/locale/ja-jp.ts rename to images/chromium-headful/client/src/locale/ja-jp.ts diff --git a/unikernels/unikraft-cu/client/src/locale/ko-kr.ts b/images/chromium-headful/client/src/locale/ko-kr.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/locale/ko-kr.ts rename to images/chromium-headful/client/src/locale/ko-kr.ts diff --git a/unikernels/unikraft-cu/client/src/locale/nb-no.ts b/images/chromium-headful/client/src/locale/nb-no.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/locale/nb-no.ts rename to images/chromium-headful/client/src/locale/nb-no.ts diff --git a/unikernels/unikraft-cu/client/src/locale/ru-ru.ts b/images/chromium-headful/client/src/locale/ru-ru.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/locale/ru-ru.ts rename to images/chromium-headful/client/src/locale/ru-ru.ts diff --git a/unikernels/unikraft-cu/client/src/locale/sk-sk.ts b/images/chromium-headful/client/src/locale/sk-sk.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/locale/sk-sk.ts rename to images/chromium-headful/client/src/locale/sk-sk.ts diff --git a/unikernels/unikraft-cu/client/src/locale/sv-se.ts b/images/chromium-headful/client/src/locale/sv-se.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/locale/sv-se.ts rename to images/chromium-headful/client/src/locale/sv-se.ts diff --git a/unikernels/unikraft-cu/client/src/locale/zh-cn.ts b/images/chromium-headful/client/src/locale/zh-cn.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/locale/zh-cn.ts rename to images/chromium-headful/client/src/locale/zh-cn.ts diff --git a/unikernels/unikraft-cu/client/src/locale/zh-tw.ts b/images/chromium-headful/client/src/locale/zh-tw.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/locale/zh-tw.ts rename to images/chromium-headful/client/src/locale/zh-tw.ts diff --git a/unikernels/unikraft-cu/client/src/main.ts b/images/chromium-headful/client/src/main.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/main.ts rename to images/chromium-headful/client/src/main.ts diff --git a/unikernels/unikraft-cu/client/src/neko/base.ts b/images/chromium-headful/client/src/neko/base.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/neko/base.ts rename to images/chromium-headful/client/src/neko/base.ts diff --git a/unikernels/unikraft-cu/client/src/neko/data.ts b/images/chromium-headful/client/src/neko/data.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/neko/data.ts rename to images/chromium-headful/client/src/neko/data.ts diff --git a/unikernels/unikraft-cu/client/src/neko/events.ts b/images/chromium-headful/client/src/neko/events.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/neko/events.ts rename to images/chromium-headful/client/src/neko/events.ts diff --git a/unikernels/unikraft-cu/client/src/neko/index.ts b/images/chromium-headful/client/src/neko/index.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/neko/index.ts rename to images/chromium-headful/client/src/neko/index.ts diff --git a/unikernels/unikraft-cu/client/src/neko/messages.ts b/images/chromium-headful/client/src/neko/messages.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/neko/messages.ts rename to images/chromium-headful/client/src/neko/messages.ts diff --git a/unikernels/unikraft-cu/client/src/neko/types.ts b/images/chromium-headful/client/src/neko/types.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/neko/types.ts rename to images/chromium-headful/client/src/neko/types.ts diff --git a/unikernels/unikraft-cu/client/src/plugins/anime.ts b/images/chromium-headful/client/src/plugins/anime.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/plugins/anime.ts rename to images/chromium-headful/client/src/plugins/anime.ts diff --git a/unikernels/unikraft-cu/client/src/plugins/axios.ts b/images/chromium-headful/client/src/plugins/axios.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/plugins/axios.ts rename to images/chromium-headful/client/src/plugins/axios.ts diff --git a/unikernels/unikraft-cu/client/src/plugins/i18n.ts b/images/chromium-headful/client/src/plugins/i18n.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/plugins/i18n.ts rename to images/chromium-headful/client/src/plugins/i18n.ts diff --git a/unikernels/unikraft-cu/client/src/plugins/log.ts b/images/chromium-headful/client/src/plugins/log.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/plugins/log.ts rename to images/chromium-headful/client/src/plugins/log.ts diff --git a/unikernels/unikraft-cu/client/src/plugins/neko.ts b/images/chromium-headful/client/src/plugins/neko.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/plugins/neko.ts rename to images/chromium-headful/client/src/plugins/neko.ts diff --git a/unikernels/unikraft-cu/client/src/plugins/swal.ts b/images/chromium-headful/client/src/plugins/swal.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/plugins/swal.ts rename to images/chromium-headful/client/src/plugins/swal.ts diff --git a/unikernels/unikraft-cu/client/src/store/chat.ts b/images/chromium-headful/client/src/store/chat.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/store/chat.ts rename to images/chromium-headful/client/src/store/chat.ts diff --git a/unikernels/unikraft-cu/client/src/store/client.ts b/images/chromium-headful/client/src/store/client.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/store/client.ts rename to images/chromium-headful/client/src/store/client.ts diff --git a/unikernels/unikraft-cu/client/src/store/emoji.ts b/images/chromium-headful/client/src/store/emoji.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/store/emoji.ts rename to images/chromium-headful/client/src/store/emoji.ts diff --git a/unikernels/unikraft-cu/client/src/store/files.ts b/images/chromium-headful/client/src/store/files.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/store/files.ts rename to images/chromium-headful/client/src/store/files.ts diff --git a/unikernels/unikraft-cu/client/src/store/index.ts b/images/chromium-headful/client/src/store/index.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/store/index.ts rename to images/chromium-headful/client/src/store/index.ts diff --git a/unikernels/unikraft-cu/client/src/store/remote.ts b/images/chromium-headful/client/src/store/remote.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/store/remote.ts rename to images/chromium-headful/client/src/store/remote.ts diff --git a/unikernels/unikraft-cu/client/src/store/settings.ts b/images/chromium-headful/client/src/store/settings.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/store/settings.ts rename to images/chromium-headful/client/src/store/settings.ts diff --git a/unikernels/unikraft-cu/client/src/store/user.ts b/images/chromium-headful/client/src/store/user.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/store/user.ts rename to images/chromium-headful/client/src/store/user.ts diff --git a/unikernels/unikraft-cu/client/src/store/video.ts b/images/chromium-headful/client/src/store/video.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/store/video.ts rename to images/chromium-headful/client/src/store/video.ts diff --git a/unikernels/unikraft-cu/client/src/types/eventemitter3.d.ts b/images/chromium-headful/client/src/types/eventemitter3.d.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/types/eventemitter3.d.ts rename to images/chromium-headful/client/src/types/eventemitter3.d.ts diff --git a/unikernels/unikraft-cu/client/src/types/navigator.keyboard.d.ts b/images/chromium-headful/client/src/types/navigator.keyboard.d.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/types/navigator.keyboard.d.ts rename to images/chromium-headful/client/src/types/navigator.keyboard.d.ts diff --git a/unikernels/unikraft-cu/client/src/types/shims-scss.d.ts b/images/chromium-headful/client/src/types/shims-scss.d.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/types/shims-scss.d.ts rename to images/chromium-headful/client/src/types/shims-scss.d.ts diff --git a/unikernels/unikraft-cu/client/src/types/shims-tsx.d.ts b/images/chromium-headful/client/src/types/shims-tsx.d.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/types/shims-tsx.d.ts rename to images/chromium-headful/client/src/types/shims-tsx.d.ts diff --git a/unikernels/unikraft-cu/client/src/types/shims-vue.d.ts b/images/chromium-headful/client/src/types/shims-vue.d.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/types/shims-vue.d.ts rename to images/chromium-headful/client/src/types/shims-vue.d.ts diff --git a/unikernels/unikraft-cu/client/src/utils/guacamole-keyboard.js b/images/chromium-headful/client/src/utils/guacamole-keyboard.js similarity index 100% rename from unikernels/unikraft-cu/client/src/utils/guacamole-keyboard.js rename to images/chromium-headful/client/src/utils/guacamole-keyboard.js diff --git a/unikernels/unikraft-cu/client/src/utils/guacamole-keyboard.ts b/images/chromium-headful/client/src/utils/guacamole-keyboard.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/utils/guacamole-keyboard.ts rename to images/chromium-headful/client/src/utils/guacamole-keyboard.ts diff --git a/unikernels/unikraft-cu/client/src/utils/index.ts b/images/chromium-headful/client/src/utils/index.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/utils/index.ts rename to images/chromium-headful/client/src/utils/index.ts diff --git a/unikernels/unikraft-cu/client/src/utils/localstorage.ts b/images/chromium-headful/client/src/utils/localstorage.ts similarity index 100% rename from unikernels/unikraft-cu/client/src/utils/localstorage.ts rename to images/chromium-headful/client/src/utils/localstorage.ts diff --git a/unikernels/unikraft-cu/client/tools/emoji.ts b/images/chromium-headful/client/tools/emoji.ts similarity index 100% rename from unikernels/unikraft-cu/client/tools/emoji.ts rename to images/chromium-headful/client/tools/emoji.ts diff --git a/unikernels/unikraft-cu/client/tools/emoji_custom.ts b/images/chromium-headful/client/tools/emoji_custom.ts similarity index 100% rename from unikernels/unikraft-cu/client/tools/emoji_custom.ts rename to images/chromium-headful/client/tools/emoji_custom.ts diff --git a/unikernels/unikraft-cu/client/tools/tsconfig.json b/images/chromium-headful/client/tools/tsconfig.json similarity index 100% rename from unikernels/unikraft-cu/client/tools/tsconfig.json rename to images/chromium-headful/client/tools/tsconfig.json diff --git a/unikernels/unikraft-cu/client/tsconfig.json b/images/chromium-headful/client/tsconfig.json similarity index 100% rename from unikernels/unikraft-cu/client/tsconfig.json rename to images/chromium-headful/client/tsconfig.json diff --git a/unikernels/unikraft-cu/client/vue.config.js b/images/chromium-headful/client/vue.config.js similarity index 100% rename from unikernels/unikraft-cu/client/vue.config.js rename to images/chromium-headful/client/vue.config.js diff --git a/unikernels/unikraft-cu/image-chromium/.config/tint2/applications/gedit.desktop b/images/chromium-headful/image-chromium/.config/tint2/applications/gedit.desktop similarity index 100% rename from unikernels/unikraft-cu/image-chromium/.config/tint2/applications/gedit.desktop rename to images/chromium-headful/image-chromium/.config/tint2/applications/gedit.desktop diff --git a/unikernels/unikraft-cu/image-chromium/.config/tint2/applications/terminal.desktop b/images/chromium-headful/image-chromium/.config/tint2/applications/terminal.desktop similarity index 100% rename from unikernels/unikraft-cu/image-chromium/.config/tint2/applications/terminal.desktop rename to images/chromium-headful/image-chromium/.config/tint2/applications/terminal.desktop diff --git a/unikernels/unikraft-cu/image-chromium/.config/tint2/tint2rc b/images/chromium-headful/image-chromium/.config/tint2/tint2rc similarity index 100% rename from unikernels/unikraft-cu/image-chromium/.config/tint2/tint2rc rename to images/chromium-headful/image-chromium/.config/tint2/tint2rc diff --git a/unikernels/unikraft-cu/image-chromium/.streamlit/config.toml b/images/chromium-headful/image-chromium/.streamlit/config.toml similarity index 100% rename from unikernels/unikraft-cu/image-chromium/.streamlit/config.toml rename to images/chromium-headful/image-chromium/.streamlit/config.toml diff --git a/unikernels/unikraft-cu/image-chromium/entrypoint.sh b/images/chromium-headful/image-chromium/entrypoint.sh similarity index 100% rename from unikernels/unikraft-cu/image-chromium/entrypoint.sh rename to images/chromium-headful/image-chromium/entrypoint.sh diff --git a/unikernels/unikraft-cu/image-chromium/http_server.py b/images/chromium-headful/image-chromium/http_server.py similarity index 100% rename from unikernels/unikraft-cu/image-chromium/http_server.py rename to images/chromium-headful/image-chromium/http_server.py diff --git a/unikernels/unikraft-cu/image-chromium/index.html b/images/chromium-headful/image-chromium/index.html similarity index 100% rename from unikernels/unikraft-cu/image-chromium/index.html rename to images/chromium-headful/image-chromium/index.html diff --git a/unikernels/unikraft-cu/image-chromium/mutter_startup.sh b/images/chromium-headful/image-chromium/mutter_startup.sh similarity index 100% rename from unikernels/unikraft-cu/image-chromium/mutter_startup.sh rename to images/chromium-headful/image-chromium/mutter_startup.sh diff --git a/unikernels/unikraft-cu/image-chromium/novnc_startup.sh b/images/chromium-headful/image-chromium/novnc_startup.sh similarity index 100% rename from unikernels/unikraft-cu/image-chromium/novnc_startup.sh rename to images/chromium-headful/image-chromium/novnc_startup.sh diff --git a/unikernels/unikraft-cu/image-chromium/start_all.sh b/images/chromium-headful/image-chromium/start_all.sh similarity index 100% rename from unikernels/unikraft-cu/image-chromium/start_all.sh rename to images/chromium-headful/image-chromium/start_all.sh diff --git a/unikernels/unikraft-cu/image-chromium/static_content/index.html b/images/chromium-headful/image-chromium/static_content/index.html similarity index 100% rename from unikernels/unikraft-cu/image-chromium/static_content/index.html rename to images/chromium-headful/image-chromium/static_content/index.html diff --git a/unikernels/unikraft-cu/image-chromium/tint2_startup.sh b/images/chromium-headful/image-chromium/tint2_startup.sh similarity index 100% rename from unikernels/unikraft-cu/image-chromium/tint2_startup.sh rename to images/chromium-headful/image-chromium/tint2_startup.sh diff --git a/unikernels/unikraft-cu/image-chromium/x11vnc_startup.sh b/images/chromium-headful/image-chromium/x11vnc_startup.sh similarity index 100% rename from unikernels/unikraft-cu/image-chromium/x11vnc_startup.sh rename to images/chromium-headful/image-chromium/x11vnc_startup.sh diff --git a/unikernels/unikraft-cu/image-chromium/xvfb_startup.sh b/images/chromium-headful/image-chromium/xvfb_startup.sh similarity index 100% rename from unikernels/unikraft-cu/image-chromium/xvfb_startup.sh rename to images/chromium-headful/image-chromium/xvfb_startup.sh diff --git a/unikernels/unikraft-cu/neko.yaml b/images/chromium-headful/neko.yaml similarity index 100% rename from unikernels/unikraft-cu/neko.yaml rename to images/chromium-headful/neko.yaml diff --git a/unikernels/unikraft-cu/run-docker.sh b/images/chromium-headful/run-docker.sh similarity index 82% rename from unikernels/unikraft-cu/run-docker.sh rename to images/chromium-headful/run-docker.sh index b82871a3..1d713f3d 100755 --- a/unikernels/unikraft-cu/run-docker.sh +++ b/images/chromium-headful/run-docker.sh @@ -36,7 +36,13 @@ if [[ "${ENABLE_WEBRTC:-}" == "true" ]]; then echo "Running container with WebRTC" RUN_ARGS+=( -p 443:8080 ) RUN_ARGS+=( -e ENABLE_WEBRTC=true ) - [[ -n "${NEKO_ICESERVERS:-}" ]] && RUN_ARGS+=( -e NEKO_ICESERVERS="$NEKO_ICESERVERS" ) + if [[ -n "${NEKO_ICESERVERS:-}" ]]; then + RUN_ARGS+=( -e NEKO_ICESERVERS="$NEKO_ICESERVERS" ) + else + RUN_ARGS+=( -e NEKO_WEBRTC_EPR=56000-56100 ) + RUN_ARGS+=( -e NEKO_WEBRTC_NAT1TO1=127.0.0.1 ) + RUN_ARGS+=( -p 56000-56100:56000-56100/udp ) + fi else echo "Running container with noVNC" RUN_ARGS+=( -p 443:6080 ) diff --git a/unikernels/unikraft-cu/run-unikernel.sh b/images/chromium-headful/run-unikernel.sh similarity index 100% rename from unikernels/unikraft-cu/run-unikernel.sh rename to images/chromium-headful/run-unikernel.sh diff --git a/unikernels/unikraft-cu/wrapper.sh b/images/chromium-headful/wrapper.sh similarity index 100% rename from unikernels/unikraft-cu/wrapper.sh rename to images/chromium-headful/wrapper.sh diff --git a/unikernels/unikraft-cu/xorg-deps/Dockerfile b/images/chromium-headful/xorg-deps/Dockerfile similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/Dockerfile rename to images/chromium-headful/xorg-deps/Dockerfile diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-input-neko/.gitignore b/images/chromium-headful/xorg-deps/xf86-input-neko/.gitignore similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-input-neko/.gitignore rename to images/chromium-headful/xorg-deps/xf86-input-neko/.gitignore diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-input-neko/80-neko.conf b/images/chromium-headful/xorg-deps/xf86-input-neko/80-neko.conf similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-input-neko/80-neko.conf rename to images/chromium-headful/xorg-deps/xf86-input-neko/80-neko.conf diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-input-neko/COPYING b/images/chromium-headful/xorg-deps/xf86-input-neko/COPYING similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-input-neko/COPYING rename to images/chromium-headful/xorg-deps/xf86-input-neko/COPYING diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-input-neko/Dockerfile b/images/chromium-headful/xorg-deps/xf86-input-neko/Dockerfile similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-input-neko/Dockerfile rename to images/chromium-headful/xorg-deps/xf86-input-neko/Dockerfile diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-input-neko/Makefile.am b/images/chromium-headful/xorg-deps/xf86-input-neko/Makefile.am similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-input-neko/Makefile.am rename to images/chromium-headful/xorg-deps/xf86-input-neko/Makefile.am diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-input-neko/README.md b/images/chromium-headful/xorg-deps/xf86-input-neko/README.md similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-input-neko/README.md rename to images/chromium-headful/xorg-deps/xf86-input-neko/README.md diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-input-neko/autogen-clean.sh b/images/chromium-headful/xorg-deps/xf86-input-neko/autogen-clean.sh similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-input-neko/autogen-clean.sh rename to images/chromium-headful/xorg-deps/xf86-input-neko/autogen-clean.sh diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-input-neko/autogen.sh b/images/chromium-headful/xorg-deps/xf86-input-neko/autogen.sh similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-input-neko/autogen.sh rename to images/chromium-headful/xorg-deps/xf86-input-neko/autogen.sh diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-input-neko/configure.ac b/images/chromium-headful/xorg-deps/xf86-input-neko/configure.ac similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-input-neko/configure.ac rename to images/chromium-headful/xorg-deps/xf86-input-neko/configure.ac diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-input-neko/m4/.gitkeep b/images/chromium-headful/xorg-deps/xf86-input-neko/m4/.gitkeep similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-input-neko/m4/.gitkeep rename to images/chromium-headful/xorg-deps/xf86-input-neko/m4/.gitkeep diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-input-neko/release.sh b/images/chromium-headful/xorg-deps/xf86-input-neko/release.sh similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-input-neko/release.sh rename to images/chromium-headful/xorg-deps/xf86-input-neko/release.sh diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-input-neko/src/Makefile.am b/images/chromium-headful/xorg-deps/xf86-input-neko/src/Makefile.am similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-input-neko/src/Makefile.am rename to images/chromium-headful/xorg-deps/xf86-input-neko/src/Makefile.am diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-input-neko/src/neko.c b/images/chromium-headful/xorg-deps/xf86-input-neko/src/neko.c similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-input-neko/src/neko.c rename to images/chromium-headful/xorg-deps/xf86-input-neko/src/neko.c diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-input-neko/xorg-neko.pc.in b/images/chromium-headful/xorg-deps/xf86-input-neko/xorg-neko.pc.in similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-input-neko/xorg-neko.pc.in rename to images/chromium-headful/xorg-deps/xf86-input-neko/xorg-neko.pc.in diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/01_v0.3.8_xdummy-randr.patch b/images/chromium-headful/xorg-deps/xf86-video-dummy/01_v0.3.8_xdummy-randr.patch similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/01_v0.3.8_xdummy-randr.patch rename to images/chromium-headful/xorg-deps/xf86-video-dummy/01_v0.3.8_xdummy-randr.patch diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/README.md b/images/chromium-headful/xorg-deps/xf86-video-dummy/README.md similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/README.md rename to images/chromium-headful/xorg-deps/xf86-video-dummy/README.md diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/COPYING b/images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/COPYING similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/COPYING rename to images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/COPYING diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/ChangeLog b/images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/ChangeLog similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/ChangeLog rename to images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/ChangeLog diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/Makefile.am b/images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/Makefile.am similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/Makefile.am rename to images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/Makefile.am diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/Makefile.in b/images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/Makefile.in similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/Makefile.in rename to images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/Makefile.in diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/README b/images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/README similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/README rename to images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/README diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/aclocal.m4 b/images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/aclocal.m4 similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/aclocal.m4 rename to images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/aclocal.m4 diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/compile b/images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/compile similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/compile rename to images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/compile diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/config.guess b/images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/config.guess similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/config.guess rename to images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/config.guess diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/config.h.in b/images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/config.h.in similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/config.h.in rename to images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/config.h.in diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/config.sub b/images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/config.sub similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/config.sub rename to images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/config.sub diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/configure b/images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/configure similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/configure rename to images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/configure diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/configure.ac b/images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/configure.ac similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/configure.ac rename to images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/configure.ac diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/depcomp b/images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/depcomp similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/depcomp rename to images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/depcomp diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/install-sh b/images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/install-sh similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/install-sh rename to images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/install-sh diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/ltmain.sh b/images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/ltmain.sh similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/ltmain.sh rename to images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/ltmain.sh diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/missing b/images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/missing similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/missing rename to images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/missing diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/src/Makefile.am b/images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/src/Makefile.am similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/src/Makefile.am rename to images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/src/Makefile.am diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/src/Makefile.in b/images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/src/Makefile.in similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/src/Makefile.in rename to images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/src/Makefile.in diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/src/compat-api.h b/images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/src/compat-api.h similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/src/compat-api.h rename to images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/src/compat-api.h diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/src/dummy.h b/images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/src/dummy.h similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/src/dummy.h rename to images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/src/dummy.h diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/src/dummy_cursor.c b/images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/src/dummy_cursor.c similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/src/dummy_cursor.c rename to images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/src/dummy_cursor.c diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/src/dummy_dga.c b/images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/src/dummy_dga.c similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/src/dummy_dga.c rename to images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/src/dummy_dga.c diff --git a/unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/src/dummy_driver.c b/images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/src/dummy_driver.c similarity index 100% rename from unikernels/unikraft-cu/xorg-deps/xf86-video-dummy/v0.3.8/src/dummy_driver.c rename to images/chromium-headful/xorg-deps/xf86-video-dummy/v0.3.8/src/dummy_driver.c diff --git a/unikernels/unikraft-cu/xorg.conf b/images/chromium-headful/xorg.conf similarity index 100% rename from unikernels/unikraft-cu/xorg.conf rename to images/chromium-headful/xorg.conf diff --git a/unikernels/unikraft-chromium-headless/.gitignore b/images/chromium-headless/.gitignore similarity index 100% rename from unikernels/unikraft-chromium-headless/.gitignore rename to images/chromium-headless/.gitignore diff --git a/unikernels/unikraft-chromium-headless/README.md b/images/chromium-headless/README.md similarity index 100% rename from unikernels/unikraft-chromium-headless/README.md rename to images/chromium-headless/README.md diff --git a/unikernels/unikraft-chromium-headless/build-docker.sh b/images/chromium-headless/build-docker.sh similarity index 100% rename from unikernels/unikraft-chromium-headless/build-docker.sh rename to images/chromium-headless/build-docker.sh diff --git a/unikernels/unikraft-chromium-headless/build-unikernel.sh b/images/chromium-headless/build-unikernel.sh similarity index 100% rename from unikernels/unikraft-chromium-headless/build-unikernel.sh rename to images/chromium-headless/build-unikernel.sh diff --git a/unikernels/unikraft-chromium-headless/common.sh b/images/chromium-headless/common.sh similarity index 100% rename from unikernels/unikraft-chromium-headless/common.sh rename to images/chromium-headless/common.sh diff --git a/unikernels/unikraft-chromium-headless/image/.dockerignore b/images/chromium-headless/image/.dockerignore similarity index 100% rename from unikernels/unikraft-chromium-headless/image/.dockerignore rename to images/chromium-headless/image/.dockerignore diff --git a/unikernels/unikraft-chromium-headless/image/.gitignore b/images/chromium-headless/image/.gitignore similarity index 100% rename from unikernels/unikraft-chromium-headless/image/.gitignore rename to images/chromium-headless/image/.gitignore diff --git a/unikernels/unikraft-chromium-headless/image/Dockerfile b/images/chromium-headless/image/Dockerfile similarity index 100% rename from unikernels/unikraft-chromium-headless/image/Dockerfile rename to images/chromium-headless/image/Dockerfile diff --git a/unikernels/unikraft-chromium-headless/image/Kraftfile b/images/chromium-headless/image/Kraftfile similarity index 100% rename from unikernels/unikraft-chromium-headless/image/Kraftfile rename to images/chromium-headless/image/Kraftfile diff --git a/unikernels/unikraft-chromium-headless/image/wrapper.sh b/images/chromium-headless/image/wrapper.sh similarity index 100% rename from unikernels/unikraft-chromium-headless/image/wrapper.sh rename to images/chromium-headless/image/wrapper.sh diff --git a/unikernels/unikraft-chromium-headless/image/xvfb_startup.sh b/images/chromium-headless/image/xvfb_startup.sh similarity index 100% rename from unikernels/unikraft-chromium-headless/image/xvfb_startup.sh rename to images/chromium-headless/image/xvfb_startup.sh diff --git a/unikernels/unikraft-chromium-headless/run-docker.sh b/images/chromium-headless/run-docker.sh similarity index 100% rename from unikernels/unikraft-chromium-headless/run-docker.sh rename to images/chromium-headless/run-docker.sh diff --git a/unikernels/unikraft-chromium-headless/run-unikernel.sh b/images/chromium-headless/run-unikernel.sh similarity index 100% rename from unikernels/unikraft-chromium-headless/run-unikernel.sh rename to images/chromium-headless/run-unikernel.sh diff --git a/static/images/unikernel-gh.gif b/static/images/unikernel-gh.gif deleted file mode 100644 index 7bf52c74..00000000 Binary files a/static/images/unikernel-gh.gif and /dev/null differ diff --git a/unikernels/unikraft-cu/README.md b/unikernels/unikraft-cu/README.md deleted file mode 100644 index db9a4a20..00000000 --- a/unikernels/unikraft-cu/README.md +++ /dev/null @@ -1,135 +0,0 @@ - -# *️⃣ Chromium x Unikernel - -This deploys headful Chromium on a unikernel. It also exposes a remote GUI through noVNC so you can see and use the unikernel's live browser. This unikernel implementation can only be run on Unikraft Cloud, which requires an account. [Join our waitlist](https://onkernel.com) if you don't want to deploy / manage unikernel instances yourself. - -![Chromium x Unikernel Demo](/static/images/unikernel-gh.gif) - -## 1. Install the Kraft CLI -`curl -sSfL https://get.kraftkit.sh | sh` - -## 2. Add Unikraft Secret to Your CLI -`export UKC_METRO= and UKC_TOKEN=` - -## 3. Build the image -`./build-unikernel.sh` - -## 4. Run it -`./run-unikernel.sh` - -When the deployment finishes successfully, the Kraft CLI will print out something like this: -``` -Deployed successfully! - β”‚ - β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€ name: kernel-cu - β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€ uuid: 0cddb958... - β”œβ”€β”€β”€β”€β”€β”€β”€β”€ metro: - β”œβ”€β”€β”€β”€β”€β”€β”€β”€ state: starting - β”œβ”€β”€β”€β”€β”€β”€β”€ domain: https://.kraft.host - β”œβ”€β”€β”€β”€β”€β”€β”€β”€ image: onkernel/kernel-cu@sha256:8265f3f188... - β”œβ”€β”€β”€β”€β”€β”€β”€ memory: 8192 MiB - β”œβ”€β”€β”€β”€β”€β”€ service: - β”œβ”€ private fqdn: - β”œβ”€β”€β”€ private ip: - └───────── args: /wrapper.sh -``` - -### 3.1 Deploy the Implementation with WebRTC desktop streaming enabled -```sh -ENABLE_WEBRTC=true NEKO_ICESERVERS=xxx ./run-unikernel.sh -``` - -`NEKO_ICESERVERS` -* Describes multiple STUN and TURN server that can be used by the ICEAgent to establish a connection with a peer. -* e.g. `[{"urls": ["turn:turn.example.com:19302", "stun:stun.example.com:19302"], "username": "name", "credential": "password"}, {"urls": ["stun:stun.example2.com:19302"]}]` - -WebRTC web client will run at port `8080`. - -## πŸ§‘β€πŸ’» Connect via remote GUI (noVNC) - -This implementation maps a noVNC remote GUI to the host port. You can access it by visiting the `domain` listed in Kraft's CLI output above. The remote GUI supports both read and write actions on the browser. - -## πŸ‘Ύ Connect via Chrome DevTools Protocol - -We expose port `9222` via ncat, allowing you to connect Chrome DevTools Protocol-based browser frameworks like Playwright and Puppeteer (and CDP-based SDKs like Browser Use). You can use these frameworks to drive the browser in the cloud. You can also disconnect from the browser and reconnect to it. The unikernel's browser persists and goes into standby mode when you're not using it. - -First, fetch the browser's CDP websocket endpoint: - -```typescript -// Use the url provided by the Unikraft deployment -const url = new URL("https://.kraft.host:9222/json/version"); -const response = await fetch(url, { - headers: { - "Host": "" - } -}); -if (response.status !== 200) { - throw new Error( - `Failed to retrieve browser instance: ${ - response.statusText - } ${await response.text()}` - ); -} -// webSocketDebuggerUrl should look like: -// ws:///devtools/browser/06acd5ef-9961-431d-b6a0-86b99734f816 -const { webSocketDebuggerUrl } = await response.json(); - -// Remove the webSocketDebuggerUrl's ws:// prefix -const webSocketPath = webSocketDebuggerUrl.replace('ws://', ''); -// Output will be something like: -// wss://.kraft.host:9222/devtools/browser/06acd5ef-9961-431d-b6a0-86b99734f816 -const finalWSUrl = `wss://${url.host}${webSocketPath}`; -console.log(finalWSUrl); -``` - -Then, connect a remote Playwright or Puppeteer client to it: - -```typescript -const browser = await puppeteer.connect({ - browserWSEndpoint: finalWSUrl, -}); -``` - -or: - -```typescript -const browser = await chromium.connectOverCDP(finalWSUrl); -``` - -## πŸ“¦ Unikernel Notes - -- The image requires at least 8gb of memory. -- Various services (mutter, tint) take a few seconds to start-up. Once they do, the standby and restart time is extremely fast. If you'd find a variant of this image useful, message us on [Discord](https://discord.gg/FBrveQRcud)! -- The Unikraft deployment generates a url. This url is public, meaning _anyone_ can access the remote GUI if they have the url. Only use this for non-sensitive browser interactions, and delete the unikernel instance when you're done. -- This deployment doesn't expose the ports to Anthropic's Computer Use's [other interfaces](https://github.com/anthropics/anthropic-quickstarts/tree/main/computer-use-demo#accessing-the-demo-app), but you can do so by altering [deploy.sh](./deploy.sh). -- We're still exploring the limitations of putting a browser on a unikernel. Everything described in this README is from our own observations. If you notice any interesting behavior or limitations of Chromium on a unikernel, please share it on our [Discord](https://discord.gg/FBrveQRcud). -- You can call `browser.close()` to disconnect to the browser, and the unikernel will go into standby after network activity ends. You can then reconnect to the instance using CDP. `browser.close()` ends the websocket connection but doesn't actually close the browser. -- See this repo's [homepage](/README.md) for some benefits of putting Chromium on a unikernel. - -## Docker - -You can also run the Dockerfile directly as a docker container: - -```sh -./build-docker.sh -./run-docker.sh -``` - -## πŸ“ž WebRTC Notes - -- Deploying to Unikraft Cloud requires the usage of a [TURN](https://webrtc.org/getting-started/turn-server), as direct exposure of UDP ports is not currently supported. -- WebRTC functionality is enabled through customized components of [neko](https://github.com/m1k1o/neko). -- TODO: Audio streaming is currently non-functional and needs to be fixed. - -## 🀝 License & Contributing -See [here](/README.md) for license and contributing details. - - -## πŸ… Join our Team -We're hiring exceptional senior and staff backend engineers to work on the future of AI infrastructure. Full-time or contract-to-hire. Join a small team that punches well above its weight, minimal meetings and no bureaucracy. By developers, for developers. - -$175k-200k + equity + great healthcare. Remote in the continental US. - -Things we're working on: serverless, containers/vms/unikernels, streaming, SDKs, CLIs. - -Message `catherine jue` on [Discord](https://discord.gg/FBrveQRcud) with what you've been building lately. diff --git a/unikernels/unikraft-cu/client/public/favicon-16x16.png b/unikernels/unikraft-cu/client/public/favicon-16x16.png deleted file mode 100644 index a85269f6..00000000 Binary files a/unikernels/unikraft-cu/client/public/favicon-16x16.png and /dev/null differ diff --git a/unikernels/unikraft-cu/client/public/favicon-32x32.png b/unikernels/unikraft-cu/client/public/favicon-32x32.png deleted file mode 100644 index 6db8c092..00000000 Binary files a/unikernels/unikraft-cu/client/public/favicon-32x32.png and /dev/null differ