fix(android): force manual file load to bypass black screen issue

This commit is contained in:
MrPiglr 2026-02-11 21:49:31 -07:00
parent a3336954d4
commit d74c99a72d
40 changed files with 7431 additions and 145 deletions

1
.gitignore vendored
View file

@ -30,6 +30,7 @@ Gemfile.lock
.env.*.local
# Ignore Linux build artifacts and special files
aethex-linux-build/rootfs/
shell/aethex-shell/aethex-linux-build/rootfs/
!shell/aethex-shell/aethex-linux-build/rootfs/**/*.sh
!shell/aethex-shell/aethex-linux-build/rootfs/**/*.conf

BIN
.vs/AeThexOS/v17/.wsuo Normal file

Binary file not shown.

View file

@ -0,0 +1,23 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\PCOEM\\AeThexOS\\",
"Documents": [],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": -1,
"Children": [
{
"$type": "Bookmark",
"Name": "ST:0:0:{cce594b6-0c39-4442-ba28-10c64ac7e89f}"
}
]
}
]
}
]
}

View file

@ -0,0 +1,6 @@
{
"ExpandedNodes": [
""
],
"PreviewInSolutionExplorer": false
}

BIN
.vs/slnx.sqlite Normal file

Binary file not shown.

View file

@ -0,0 +1,73 @@
<?xml version="1.0"?>
<!--
** DO NOT EDIT THIS FILE.
** If you make changes to this file while any VirtualBox related application
** is running, your changes will be overwritten later, without taking effect.
** Use VBoxManage or the VirtualBox Manager GUI to make changes.
**
** Written by VirtualBox 7.2.4 (r170995)
-->
<VirtualBox xmlns="http://www.virtualbox.org/" version="1.19-windows">
<Machine uuid="{8c1c17d5-577f-49b7-a0f9-a2a911c386b1}" name="AeThexOS_V5" OSType="Ubuntu_64" snapshotFolder="Snapshots" lastStateChange="2026-02-06T05:50:10Z">
<MediaRegistry>
<HardDisks>
<HardDisk uuid="{df646f0c-79f5-44d0-80dd-a4adf770a768}" location="AeThexOS_V5.vdi" format="VDI" type="Normal"/>
</HardDisks>
<DVDImages>
<Image uuid="{a8fccaaf-38fc-4b21-bfb4-4fd7009afb9a}" location="C:/Users/PCOEM/AeThexOS/AeThex-OS-V5-Final.iso"/>
</DVDImages>
</MediaRegistry>
<ExtraData>
<ExtraDataItem name="GUI/LastNormalWindowPosition" value="640,249,800,654"/>
</ExtraData>
<Hardware>
<Memory RAMSize="4096"/>
<Boot>
<Order position="1" device="DVD"/>
<Order position="2" device="HardDisk"/>
<Order position="3" device="None"/>
<Order position="4" device="None"/>
</Boot>
<Display controller="VMSVGA" VRAMSize="128"/>
<Firmware/>
<BIOS>
<IOAPIC enabled="true"/>
<SmbiosUuidLittleEndian enabled="true"/>
<AutoSerialNumGen enabled="true"/>
</BIOS>
<Network>
<Adapter slot="0" enabled="true" MACAddress="0800274A28ED" type="82540EM">
<NAT localhost-reachable="true"/>
</Adapter>
</Network>
<AudioAdapter useDefault="true" driver="WAS" enabled="true"/>
<Clipboard/>
<GuestProperties>
<GuestProperty name="/VirtualBox/GuestAdd/GuiOnFocus" value="1" timestamp="1770357010041817500" flags="TRANSIENT, RDONLYGUEST"/>
<GuestProperty name="/VirtualBox/HostInfo/GUI/LanguageID" value="en_US" timestamp="1770357057154551500" flags="RDONLYGUEST"/>
<GuestProperty name="/VirtualBox/HostInfo/VBoxRev" value="170995" timestamp="1770357010002592302" flags="TRANSIENT, RDONLYGUEST"/>
<GuestProperty name="/VirtualBox/HostInfo/VBoxVer" value="7.2.4" timestamp="1770357010002592300" flags="TRANSIENT, RDONLYGUEST"/>
<GuestProperty name="/VirtualBox/HostInfo/VBoxVerExt" value="7.2.4" timestamp="1770357010002592301" flags="TRANSIENT, RDONLYGUEST"/>
</GuestProperties>
<StorageControllers>
<StorageController name="SATA Controller" type="AHCI" PortCount="30" useHostIOCache="false" Bootable="true" IDE0MasterEmulationPort="0" IDE0SlaveEmulationPort="1" IDE1MasterEmulationPort="2" IDE1SlaveEmulationPort="3">
<AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0">
<Image uuid="{df646f0c-79f5-44d0-80dd-a4adf770a768}"/>
</AttachedDevice>
</StorageController>
<StorageController name="IDE Controller" type="PIIX4" PortCount="2" useHostIOCache="true" Bootable="true">
<AttachedDevice passthrough="false" type="DVD" hotpluggable="false" port="0" device="0">
<Image uuid="{a8fccaaf-38fc-4b21-bfb4-4fd7009afb9a}"/>
</AttachedDevice>
</StorageController>
</StorageControllers>
<RTC localOrUTC="UTC"/>
<CPU count="2">
<HardwareVirtExLargePages enabled="true"/>
<PAE enabled="false"/>
<LongMode enabled="true"/>
<X2APIC enabled="true"/>
</CPU>
</Hardware>
</Machine>
</VirtualBox>

View file

@ -0,0 +1,73 @@
<?xml version="1.0"?>
<!--
** DO NOT EDIT THIS FILE.
** If you make changes to this file while any VirtualBox related application
** is running, your changes will be overwritten later, without taking effect.
** Use VBoxManage or the VirtualBox Manager GUI to make changes.
**
** Written by VirtualBox 7.2.4 (r170995)
-->
<VirtualBox xmlns="http://www.virtualbox.org/" version="1.19-windows">
<Machine uuid="{8c1c17d5-577f-49b7-a0f9-a2a911c386b1}" name="AeThexOS_V5" OSType="Ubuntu_64" snapshotFolder="Snapshots" lastStateChange="2026-02-06T05:50:10Z">
<MediaRegistry>
<HardDisks>
<HardDisk uuid="{df646f0c-79f5-44d0-80dd-a4adf770a768}" location="AeThexOS_V5.vdi" format="VDI" type="Normal"/>
</HardDisks>
<DVDImages>
<Image uuid="{a8fccaaf-38fc-4b21-bfb4-4fd7009afb9a}" location="C:/Users/PCOEM/AeThexOS/AeThex-OS-V5-Final.iso"/>
</DVDImages>
</MediaRegistry>
<ExtraData>
<ExtraDataItem name="GUI/LastNormalWindowPosition" value="640,249,720,454"/>
</ExtraData>
<Hardware>
<Memory RAMSize="4096"/>
<Boot>
<Order position="1" device="DVD"/>
<Order position="2" device="HardDisk"/>
<Order position="3" device="None"/>
<Order position="4" device="None"/>
</Boot>
<Display controller="VMSVGA" VRAMSize="128"/>
<Firmware/>
<BIOS>
<IOAPIC enabled="true"/>
<SmbiosUuidLittleEndian enabled="true"/>
<AutoSerialNumGen enabled="true"/>
</BIOS>
<Network>
<Adapter slot="0" enabled="true" MACAddress="0800274A28ED" type="82540EM">
<NAT localhost-reachable="true"/>
</Adapter>
</Network>
<AudioAdapter useDefault="true" driver="WAS" enabled="true"/>
<Clipboard/>
<GuestProperties>
<GuestProperty name="/VirtualBox/GuestAdd/GuiOnFocus" value="1" timestamp="1770357010041817500" flags="TRANSIENT, RDONLYGUEST"/>
<GuestProperty name="/VirtualBox/HostInfo/GUI/LanguageID" value="en_US" timestamp="1770357017701345900" flags="RDONLYGUEST"/>
<GuestProperty name="/VirtualBox/HostInfo/VBoxRev" value="170995" timestamp="1770357010002592302" flags="TRANSIENT, RDONLYGUEST"/>
<GuestProperty name="/VirtualBox/HostInfo/VBoxVer" value="7.2.4" timestamp="1770357010002592300" flags="TRANSIENT, RDONLYGUEST"/>
<GuestProperty name="/VirtualBox/HostInfo/VBoxVerExt" value="7.2.4" timestamp="1770357010002592301" flags="TRANSIENT, RDONLYGUEST"/>
</GuestProperties>
<StorageControllers>
<StorageController name="SATA Controller" type="AHCI" PortCount="30" useHostIOCache="false" Bootable="true" IDE0MasterEmulationPort="0" IDE0SlaveEmulationPort="1" IDE1MasterEmulationPort="2" IDE1SlaveEmulationPort="3">
<AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0">
<Image uuid="{df646f0c-79f5-44d0-80dd-a4adf770a768}"/>
</AttachedDevice>
</StorageController>
<StorageController name="IDE Controller" type="PIIX4" PortCount="2" useHostIOCache="true" Bootable="true">
<AttachedDevice passthrough="false" type="DVD" hotpluggable="false" port="0" device="0">
<Image uuid="{a8fccaaf-38fc-4b21-bfb4-4fd7009afb9a}"/>
</AttachedDevice>
</StorageController>
</StorageControllers>
<RTC localOrUTC="UTC"/>
<CPU count="2">
<HardwareVirtExLargePages enabled="true"/>
<PAE enabled="false"/>
<LongMode enabled="true"/>
<X2APIC enabled="true"/>
</CPU>
</Hardware>
</Machine>
</VirtualBox>

BIN
AeThexOS_V5/AeThexOS_V5.vdi Normal file

Binary file not shown.

1803
AeThexOS_V5/Logs/VBox.log Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

76
UNIKERNEL_GUIDE.md Normal file
View file

@ -0,0 +1,76 @@
# ☢️ AeThex OS: The Unikernel Path
> "It's just a site... can we do what all this is pointing towards?"
You are absolutely right. The ultimate form of AeThex is not a website running on Linux. **It is the Kernel itself.**
To achieve a "Real AeThex Kernel" without building a Linux ISO, we use **Unikernels**.
## What is this?
Instead of: `Hardware -> Linux Kernel -> Ubuntu -> Node.js -> AeThex`
We do: `Hardware -> AeThex (as Kernel)`
We use **Nanos (via OPS)** to compile your `dist/index.js` into a bootable disk image. This image has no shell, no SSH, no users. It just boots and runs your code.
---
## 🛠️ How to Build the Kernel
### 1. Prerequisites
You need a Linux environment (WSL2 works perfectly) and the `ops` tool.
```bash
# Install OPS (Orchestrator for Unikernels)
curl https://ops.city/get.sh -sSfL | sh
```
### 2. Prepare the Build
We need to bundle your server and client into a single distributable folder.
```bash
# Run the build script (creates /dist folder with everything)
npm run build
```
### 3. Compile the Kernel
Use the `ops.json` configuration I just created in your root folder.
```bash
# Build the image
ops build dist/index.js -c ops.json -i aethex-kernel-v1
# Run it locally (requires QEMU/KVM)
ops run aethex-kernel-v1
```
---
## 🖥️ The Architecture Shift
When you run this, you have achieved the "Real OS" goal:
1. **The Brain (Server):** Is now a Unikernel. It boots in milliseconds. It is secure by design (no shell to hack).
2. **The Face (Client):** Since Unikernels don't have graphics drivers for React, you view the OS from a "Thin Client" (any other device's browser).
### The "Sci-Fi" Console Setup
If you want a dedicated laptop to *be* AeThex:
1. **Boot the Unikernel** on the metal (using Nanos).
2. **The screen will be black** (it's a headless kernel).
3. **The User Interface** is projected to any connected terminal.
*To see pixels on the SAME machine, you would need to write a Display Driver in Node.js, which is functionally impossible today. The "Standard" Sci-Fi OS architecture is a Headless Core + Visual Terminals.*
---
## 📂 Configuration
See `ops.json` in the root directory.
```json
{
"Target": "node",
"Args": ["dist/index.js"],
"Env": { "PORT": "80" }
}
```
This tells the machine: "Your only purpose in life is to run this JavaScript file."

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.aethex.os">
<application
android:allowBackup="true"

View file

@ -0,0 +1,28 @@
<!DOCTYPE html>
<html>
<head>
<title>Test Page</title>
<style>
body {
background-color: #00FF00; /* Bright Green */
color: black;
font-size: 40px;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
}
</style>
</head>
<body>
<div>
<h1>TEST FILE LOADED</h1>
<p>If you see this, file access is working.</p>
</div>
<script>
console.log("Test file loaded successfully");
document.body.style.backgroundColor = "#00FF00";
</script>
</body>
</html>

View file

@ -1,86 +1,70 @@
package com.aethex.os;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import androidx.core.view.WindowCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.core.view.WindowInsetsControllerCompat;
import android.webkit.WebView;
import android.webkit.WebSettings;
import android.webkit.WebViewClient;
import android.webkit.WebResourceRequest;
import android.webkit.WebResourceError;
import android.widget.Toast;
import android.app.AlertDialog;
import com.getcapacitor.BridgeActivity;
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
import android.util.Log;
public class MainActivity extends BridgeActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Enable fullscreen immersive mode
enableImmersiveMode();
// Using onStart to hijack the process immediately after bridge init
@Override
public void onStart() {
super.onStart();
if (this.bridge != null && this.bridge.getWebView() != null) {
loadCustomUrl();
}
}
// Ensure Firebase is ready before any Capacitor plugin requests it; stay resilient if config is missing
try {
if (FirebaseApp.getApps(this).isEmpty()) {
FirebaseOptions options = null;
try {
options = FirebaseOptions.fromResource(this);
} catch (Exception ignored) {
// No google-services.json resources, we'll fall back below
}
private void loadCustomUrl() {
WebView webView = this.bridge.getWebView();
if (options != null) {
FirebaseApp.initializeApp(getApplicationContext(), options);
} else {
// Minimal placeholder so Firebase-dependent plugins don't crash when config is absent
FirebaseOptions fallback = new FirebaseOptions.Builder()
.setApplicationId("1:000000000000:android:placeholder")
.setApiKey("FAKE_API_KEY")
.setProjectId("aethex-placeholder")
.build();
FirebaseApp.initializeApp(getApplicationContext(), fallback);
}
}
} catch (Exception e) {
Log.w("MainActivity", "Firebase init skipped: " + e.getMessage());
}
}
// Set WebView background to BLACK
webView.setBackgroundColor(0xFF000000);
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
enableImmersiveMode();
}
}
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDomStorageEnabled(true);
settings.setAllowFileAccess(true);
settings.setAllowContentAccess(true);
settings.setAllowFileAccessFromFileURLs(true);
settings.setAllowUniversalAccessFromFileURLs(true);
private void enableImmersiveMode() {
View decorView = getWindow().getDecorView();
// Add WebViewClient to catch errors
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
Log.e("AeThexOS", "WebView Error: " + error.getDescription());
runOnUiThread(() -> {
new AlertDialog.Builder(MainActivity.this)
.setTitle("WebView Error")
.setMessage("Failed to load: " + request.getUrl() + "\n\nReason: " + error.getDescription())
.setPositiveButton("OK", null)
.show();
});
}
// Full immersive mode - hide everything
WindowCompat.setDecorFitsSystemWindows(getWindow(), false);
@Override
public void onPageFinished(WebView view, String url) {
Log.i("AeThexOS", "Page Loaded: " + url);
runOnUiThread(() -> {
Toast.makeText(MainActivity.this, "Loaded: " + url, Toast.LENGTH_SHORT).show();
});
}
});
WindowInsetsControllerCompat controller = WindowCompat.getInsetsController(getWindow(), decorView);
if (controller != null) {
// Hide BOTH status bar and navigation bar completely
controller.hide(WindowInsetsCompat.Type.systemBars());
// Swipe from edge to temporarily show bars
controller.setSystemBarsBehavior(WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE);
}
// Clear cache to ensure we aren't loading stale files
webView.clearCache(true);
webView.clearHistory();
// Set bars to transparent when they do show
getWindow().setStatusBarColor(android.graphics.Color.TRANSPARENT);
getWindow().setNavigationBarColor(android.graphics.Color.TRANSPARENT);
// Keep screen on + extend into cutout areas
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
getWindow().getAttributes().layoutInDisplayCutoutMode =
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
}
}
// Force load our local test file
webView.loadUrl("file:///android_asset/public/test.html");
}
}

230
auth_fix_run.log Normal file
View file

@ -0,0 +1,230 @@
> rest-express@1.0.0 build:kernel
> bash script/build-unikernel.sh
═══════════════════════════════════════════════════════════════
AeThex OS - Unikernel Builder
Target: Nanos Unikernel (Bootable Image)
═══════════════════════════════════════════════════════════════
[*] Detected Windows Environment (MinGW/Git Bash).
[*] Switching to WSL Context...
[plugin vite:reporter]
(!) C:/Users/PCOEM/AeThexOS/AeThex-OS/node_modules/@capacitor/camera/dist/esm/index.js is dynamically imported by C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts but also statically imported by C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-native-features.ts, dynamic import will not move module into another chunk.


(!) Some chunks are larger than 500 kB after minification. Consider:
- Using dynamic import() to code-split the application
- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
dist\index.js 1.5mb
Done in 1123ms
 4.62 kB │ gzip: 1.43 kB
../dist/public/assets/holographic_digital_security_seal_for_certification-DujiIi4u.png  557.88 kB
../dist/public/assets/dark_subtle_digital_grid_texture-CW2Q0w3T.png  965.43 kB
../dist/public/assets/abstract_holographic_world_map_data_visualization-DA4sQHBK.png 1,343.40 kB
../dist/public/assets/dark_digital_circuit_board_background-CqDjO0Wd.png 1,577.40 kB
../dist/public/assets/index-C25YaYOI.css  226.22 kB │ gzip: 29.40 kB
../dist/public/assets/web-DZ3HkAbg.js  0.12 kB │ gzip: 0.13 kB
../dist/public/assets/web-DPJCvkTF.js  0.28 kB │ gzip: 0.23 kB
../dist/public/assets/web-a24r8sCo.js  0.36 kB │ gzip: 0.25 kB
../dist/public/assets/web-BPkARqmR.js  0.38 kB │ gzip: 0.25 kB
../dist/public/assets/web-DiUCUXaM.js  0.42 kB │ gzip: 0.20 kB
../dist/public/assets/web-jfjrrehZ.js  0.76 kB │ gzip: 0.35 kB
../dist/public/assets/web-DLPSmpR2.js  0.90 kB │ gzip: 0.46 kB
../dist/public/assets/web-D9jibmwr.js  0.90 kB │ gzip: 0.47 kB
../dist/public/assets/web-B4eFBhIm.js  1.06 kB │ gzip: 0.34 kB
../dist/public/assets/web-DjK0eNnT.js  1.15 kB │ gzip: 0.55 kB
../dist/public/assets/web-C68zp4qU.js  2.44 kB │ gzip: 1.09 kB
../dist/public/assets/web-CONwI-Dv.js  3.45 kB │ gzip: 1.10 kB
../dist/public/assets/web-BO91sTaU.js  8.67 kB │ gzip: 2.95 kB
../dist/public/assets/index-CJvwTLjS.js 1,766.52 kB │ gzip: 471.18 kB
✓ built in 7.67s
building server...
[*] Updating OPS package list...
[*] Building Unikernel Image...
Running: /home/mrpiglr/.ops/bin/ops pkg load eyberg/node:v18.12.1 ...
warning: overwriting existing file "/dist/index.js" hostpath old: dist/index.js new: "/mnt/c/Users/PCOEM/AeThexOS/AeThex-OS//dist/index.js"
running local instance
booting /home/mrpiglr/.ops/images/aethex-kernel-v1 ...
[0.247822] en1: assigned 10.0.2.15
⚠️ Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to Node.js 20 or later. For more information, visit: https://github.com/orgs/supabase/discussions/37217
[dotenv@17.2.3] injecting env (8) from .env -- tip: ⚙️ suppress all logs with { quiet: true }
[dotenv@17.2.3] injecting env (0) from .env -- tip: ⚙️ override existing env vars with { override: true }
Warning: connect.session() MemoryStore is not
designed for a production environment, as it will leak
memory, and will not scale past a single process.
9:45:36 AM [websocket] WebSocket server initialized
9:45:36 AM [express] serving on port 8080
9:45:36 AM [websocket] WebSocket available at ws://localhost:8080/socket.io
(node:2) ExperimentalWarning: The Fetch API is an experimental feature. This feature could change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
9:45:37 AM [express] GET /api/os/notifications 304 in 236ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
[2.193894] en1: assigned FE80::E03C:17FF:FEC3:4C59
Socket.IO client connected: BAYqyUCmswYLvLqPAAAB
9:47:11 AM [express] GET /api/os/notifications 304 in 118ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
9:48:11 AM [express] GET /api/os/notifications 304 in 136ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
9:48:48 AM [express] GET /api/os/notifications 304 in 99ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
9:48:52 AM [express] POST /api/auth/login 200 in 242ms :: {"success":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","email":"mrpiglr@gmail.com","username":"MrPiglr","isAdmin":true}}
9:48:52 AM [express] GET /api/auth/session 200 in 47ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
Socket.IO client disconnected: BAYqyUCmswYLvLqPAAAB
9:48:52 AM [express] GET /api/me/profile 200 in 53ms :: {"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","role":"oversee","onboarded":true,"updated_at":"2026-01-24T21:52:29.269+00:00","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","skills":[],"avatar_url":"https://pbs.twimg.com/profile_images/1932523737615826944/cl52l39H_400x400.jpg","banner_url":"https://pbs.twimg.com/profile_banners/840045181470621696/1750821581/600x200","social_links":{"github":"https://github.com/MrPiglr","discord":"MrPiglr","twitter":"https://twitter.com/MrPiglr"},"loyalty_points":25,"email":"mrpiglr@gmail.com","created_at":"2025-08-02T09:44:56.964865+00:00","user_type":"community_member","experience_level":"beginner","full_name":"Anderson","location":"","website_url":"https://mrpiglr.store","github_url":"https://github.com/MrPiglr","twitter_url":"","linkedin_url":"","total_xp":37,"level":1,"featured_badge_ids":null,"aethex_passport_id":"e393ea02-6e06-42da-9917-cb4d424a87e4","signature":"","status":"busy","telemetry_api_key":null,"active_title":"Virtuoso","suspended_at":null,"suspension_reason":null,"roblox_user_id":null,"roblox_access_token":null,"roblox_refresh_token":null,"roblox_token_expires_at":null,"experience":null,"education":null,"primary_role":null,"specialization":null,"is_verified":true}
Socket.IO client connected: SONViRPBkUi1iTt5AAAD
9:48:53 AM [express] GET /api/directory/architects 304 in 50ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
9:48:54 AM [express] GET /api/metrics 304 in 95ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
9:49:37 AM [express] GET /api/os/notifications 304 in 112ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
9:50:24 AM [express] GET /api/metrics 304 in 266ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
9:50:36 AM [express] GET /api/os/notifications 304 in 142ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
9:50:45 AM [express] GET /api/os/notifications 200 in 138ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
9:51:37 AM [express] GET /api/os/notifications 304 in 108ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
9:53:11 AM [express] GET /api/os/notifications 304 in 110ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
9:54:10 AM [express] GET /api/os/notifications 304 in 112ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
9:55:11 AM [express] GET /api/os/notifications 304 in 145ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
9:56:10 AM [express] GET /api/os/notifications 304 in 99ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
9:57:11 AM [express] GET /api/os/notifications 304 in 158ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
9:58:10 AM [express] GET /api/os/notifications 304 in 102ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
9:58:37 AM [express] GET /api/os/notifications 304 in 117ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:00:11 AM [express] GET /api/os/notifications 304 in 115ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:01:10 AM [express] GET /api/os/notifications 304 in 103ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:02:11 AM [express] GET /api/os/notifications 304 in 115ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:03:10 AM [express] GET /api/os/notifications 304 in 212ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:04:11 AM [express] GET /api/os/notifications 304 in 213ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:05:10 AM [express] GET /api/os/notifications 304 in 118ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:06:08 AM [express] GET /api/os/projects 200 in 48ms :: [{"id":"b1a2b3c4-d5e6-f7a8-b9c0-d1e2f3a4b5c6","title":"Internal Dashboard Redesign","status":"In Progress","engine":"React"},{"id":"b2b3c4d5-e6f7-a8b9-c0d1-e2f3a4b5c6d7","title":"Real-time Collaboration Feature","status":"Planning","engine":"WebSockets"},{"id":"0efc381c-8824-47a7-8e15-79238a8512f9","title":"All-IN-One","status":"planning","engine":"Roblox"}]
10:06:11 AM [express] GET /api/os/notifications 304 in 95ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:07:10 AM [express] GET /api/os/notifications 304 in 110ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:08:11 AM [express] GET /api/os/notifications 304 in 201ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:09:10 AM [express] GET /api/os/notifications 304 in 127ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:10:11 AM [express] GET /api/os/notifications 304 in 108ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:11:10 AM [express] GET /api/os/notifications 304 in 135ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:11:59 AM [express] GET /api/os/notifications 304 in 128ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:12:10 AM [express] GET /api/metrics 304 in 116ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
Socket.IO client disconnected: SONViRPBkUi1iTt5AAAD
10:12:14 AM [express] GET /api/auth/session 304 in 122ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
10:12:15 AM [express] GET /api/os/notifications 304 in 202ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
Socket.IO client connected: 1jlsWscUMHO4pzb9AAAF
10:12:16 AM [express] GET /api/auth/session 304 in 51ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
10:12:22 AM [express] GET /api/directory/architects 304 in 95ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
10:12:22 AM [express] GET /api/metrics 304 in 200ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
10:13:16 AM [express] GET /api/os/notifications 304 in 155ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:14:15 AM [express] GET /api/os/notifications 304 in 156ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:15:16 AM [express] GET /api/os/notifications 304 in 201ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
Socket.IO client disconnected: 1jlsWscUMHO4pzb9AAAF
10:16:14 AM [express] GET /api/auth/session 304 in 100ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
10:16:14 AM [express] GET /api/os/notifications 304 in 179ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
Socket.IO client connected: 7HorosbrSbisLf-jAAAH
10:16:16 AM [express] GET /api/auth/session 304 in 51ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
10:16:21 AM [express] GET /api/directory/architects 304 in 99ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
10:16:23 AM [express] GET /api/metrics 304 in 1275ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
10:16:53 AM [express] GET /api/metrics 304 in 154ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
10:17:15 AM [express] GET /api/os/notifications 304 in 244ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
Socket.IO client disconnected: 7HorosbrSbisLf-jAAAH
10:17:51 AM [express] GET /api/auth/session 304 in 95ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
10:17:51 AM [express] GET /api/os/notifications 304 in 174ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
Socket.IO client connected: oVmGjMBMmxoOQshEAAAJ
10:17:53 AM [express] GET /api/auth/session 304 in 56ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
10:17:59 AM [express] GET /api/directory/architects 304 in 91ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
10:17:59 AM [express] GET /api/metrics 304 in 148ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
10:18:52 AM [express] GET /api/os/notifications 304 in 246ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:19:53 AM [express] GET /api/os/notifications 304 in 179ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:20:52 AM [express] GET /api/os/notifications 304 in 152ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:21:53 AM [express] GET /api/os/notifications 304 in 183ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:22:52 AM [express] GET /api/os/notifications 304 in 160ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:23:53 AM [express] GET /api/os/notifications 304 in 139ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:24:33 AM [express] GET /api/metrics 304 in 176ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
10:24:34 AM [express] GET /api/directory/architects 304 in 122ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
10:24:52 AM [express] GET /api/os/notifications 304 in 140ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:26:11 AM [express] GET /api/os/notifications 304 in 120ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:27:10 AM [express] GET /api/os/notifications 304 in 216ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:28:11 AM [express] GET /api/os/notifications 304 in 119ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:29:10 AM [express] GET /api/os/notifications 304 in 99ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:30:11 AM [express] GET /api/os/notifications 304 in 113ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:31:10 AM [express] GET /api/os/notifications 304 in 98ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:32:11 AM [express] GET /api/os/notifications 304 in 109ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:33:10 AM [express] GET /api/os/notifications 304 in 112ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:34:11 AM [express] GET /api/os/notifications 304 in 164ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:35:10 AM [express] GET /api/os/notifications 304 in 215ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:36:11 AM [express] GET /api/os/notifications 304 in 101ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:36:51 AM [express] GET /api/os/notifications 304 in 176ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
Socket.IO client disconnected: oVmGjMBMmxoOQshEAAAJ
10:36:55 AM [express] GET /api/auth/session 304 in 88ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
10:36:55 AM [express] GET /api/os/notifications 304 in 115ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
Socket.IO client connected: Hn3Vf4IWtV8vWti4AAAL
10:36:57 AM [express] GET /api/auth/session 304 in 54ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
10:37:02 AM [express] GET /api/directory/architects 304 in 99ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
10:37:02 AM [express] GET /api/metrics 304 in 185ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
Socket.IO client disconnected: Hn3Vf4IWtV8vWti4AAAL
10:37:10 AM [express] GET /api/auth/session 304 in 66ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
10:37:10 AM [express] GET /api/os/notifications 304 in 132ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
Socket.IO client connected: -4Oar_-DLHhd7XtkAAAN
10:37:12 AM [express] GET /api/auth/session 304 in 55ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
10:37:17 AM [express] GET /api/directory/architects 304 in 115ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
10:37:17 AM [express] GET /api/metrics 304 in 153ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
10:38:11 AM [express] GET /api/os/notifications 304 in 102ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:39:10 AM [express] GET /api/os/notifications 304 in 100ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
Socket.IO client disconnected: -4Oar_-DLHhd7XtkAAAN
10:39:23 AM [express] GET /api/auth/session 304 in 104ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
10:39:23 AM [express] GET /api/os/notifications 304 in 143ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
Socket.IO client connected: HtMH2_fgsHXcTyVJAAAP
10:39:25 AM [express] GET /api/auth/session 304 in 56ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
10:40:24 AM [express] GET /api/os/notifications 304 in 158ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:41:23 AM [express] GET /api/os/notifications 304 in 144ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:42:06 AM [express] GET /api/directory/architects 304 in 152ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
10:42:06 AM [express] GET /api/metrics 304 in 195ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
Socket.IO client disconnected: HtMH2_fgsHXcTyVJAAAP
10:42:10 AM [express] GET /api/auth/session 304 in 62ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
10:42:10 AM [express] GET /api/os/notifications 304 in 129ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
Socket.IO client connected: vYDfSF0shJxfTWymAAAR
10:42:12 AM [express] GET /api/auth/session 304 in 50ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
10:42:18 AM [express] GET /api/directory/architects 304 in 100ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
10:42:18 AM [express] GET /api/metrics 304 in 139ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
10:43:10 AM [express] GET /api/os/notifications 304 in 103ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:44:11 AM [express] GET /api/os/notifications 304 in 119ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:45:10 AM [express] GET /api/os/notifications 304 in 113ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:46:11 AM [express] GET /api/os/notifications 304 in 129ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:47:10 AM [express] GET /api/os/notifications 304 in 126ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:48:11 AM [express] GET /api/os/notifications 304 in 107ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:49:10 AM [express] GET /api/os/notifications 304 in 112ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:50:11 AM [express] GET /api/os/notifications 304 in 101ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:51:10 AM [express] GET /api/os/notifications 304 in 210ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:52:11 AM [express] GET /api/os/notifications 304 in 107ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:53:10 AM [express] GET /api/os/notifications 304 in 119ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:54:11 AM [express] GET /api/os/notifications 304 in 264ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:55:10 AM [express] GET /api/os/notifications 304 in 99ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:56:11 AM [express] GET /api/os/notifications 304 in 111ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:57:10 AM [express] GET /api/os/notifications 304 in 146ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:58:11 AM [express] GET /api/os/notifications 304 in 114ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
10:59:10 AM [express] GET /api/os/notifications 304 in 107ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:00:11 AM [express] GET /api/os/notifications 304 in 119ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:01:10 AM [express] GET /api/os/notifications 304 in 120ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:02:11 AM [express] GET /api/os/notifications 304 in 129ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:03:10 AM [express] GET /api/os/notifications 304 in 128ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:04:11 AM [express] GET /api/os/notifications 304 in 110ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:05:10 AM [express] GET /api/os/notifications 304 in 138ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:06:11 AM [express] GET /api/os/notifications 304 in 113ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:07:10 AM [express] GET /api/os/notifications 304 in 111ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:08:11 AM [express] GET /api/os/notifications 304 in 111ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:09:10 AM [express] GET /api/os/notifications 304 in 125ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:10:11 AM [express] GET /api/os/notifications 304 in 109ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:11:10 AM [express] GET /api/os/notifications 304 in 114ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:12:11 AM [express] GET /api/os/notifications 304 in 99ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:13:10 AM [express] GET /api/os/notifications 304 in 114ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:14:11 AM [express] GET /api/os/notifications 304 in 113ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:15:10 AM [express] GET /api/os/notifications 304 in 108ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:16:11 AM [express] GET /api/os/notifications 304 in 99ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:17:10 AM [express] GET /api/os/notifications 304 in 104ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:18:11 AM [express] GET /api/os/notifications 304 in 116ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:19:10 AM [express] GET /api/os/notifications 304 in 124ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:20:11 AM [express] GET /api/os/notifications 304 in 108ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:21:10 AM [express] GET /api/os/notifications 304 in 200ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:22:11 AM [express] GET /api/os/notifications 304 in 112ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:23:10 AM [express] GET /api/os/notifications 304 in 94ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:24:11 AM [express] GET /api/os/notifications 304 in 134ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:25:10 AM [express] GET /api/os/notifications 304 in 95ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:26:11 AM [express] GET /api/os/notifications 304 in 110ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:27:10 AM [express] GET /api/os/notifications 304 in 98ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:28:11 AM [express] GET /api/os/notifications 304 in 101ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:29:10 AM [express] GET /api/os/notifications 304 in 100ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:30:11 AM [express] GET /api/os/notifications 304 in 108ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
11:31:10 AM [express] GET /api/os/notifications 304 in 124ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]

2
boot.log Normal file
View file

@ -0,0 +1,2 @@
booting aethex-kernel-v1-1770277445 ...
onprem instance 'aethex-kernel-v1-1770277445' created...

2
boot_final.log Normal file
View file

@ -0,0 +1,2 @@
booting aethex-kernel-v1-1770277533 ...
onprem instance 'aethex-kernel-v1-1770277533' created...

View file

@ -1,4 +1,5 @@
#!/bin/bash
set -o pipefail
set -e
# AeThex OS - Full Layered Architecture Builder
@ -29,7 +30,7 @@ for cmd in debootstrap xorriso genisoimage mksquashfs grub-mkrescue; do
if ! command -v "$cmd" &> /dev/null; then
echo "[!] Missing: $cmd - installing..."
apt-get update -qq
apt-get install -y -qq "$cmd" 2>&1 | tail -5
apt-get install -y -qq "$cmd"
fi
done
@ -41,7 +42,7 @@ echo ""
echo "[+] Bootstrapping Ubuntu 22.04 base system (older kernel 5.15)..."
echo " (debootstrap takes ~10-15 minutes...)"
debootstrap --arch=amd64 --variant=minbase jammy "$ROOTFS_DIR" http://archive.ubuntu.com/ubuntu/ 2>&1 | tail -20
debootstrap --arch=amd64 --variant=minbase jammy "$ROOTFS_DIR" http://archive.ubuntu.com/ubuntu/
echo "[+] Configuring base system..."
echo "aethex-os" > "$ROOTFS_DIR/etc/hostname"
@ -80,10 +81,11 @@ chroot "$ROOTFS_DIR" bash -c '
firefox thunar xfce4-terminal \
file-roller mousepad ristretto \
zenity notify-osd \
vim nano
vim nano \
ubiquity ubiquity-frontend-gtk ubiquity-ubuntu-artwork gparted
apt-get clean
' 2>&1 | tail -50
'
echo ""
echo "┌─────────────────────────────────────────────────────────────┐"
@ -113,7 +115,7 @@ chroot "$ROOTFS_DIR" bash -c '
apt-get install -y dxvk
apt-get clean
' 2>&1 | tail -30
'
echo "[+] Setting up Wine runtime environment..."
mkdir -p "$ROOTFS_DIR/opt/aethex/runtimes/windows"
@ -158,7 +160,7 @@ chroot "$ROOTFS_DIR" bash -c '
systemctl enable docker
apt-get clean
' 2>&1 | tail -20
'
echo "[+] Installing development tools..."
chroot "$ROOTFS_DIR" bash -c '
@ -190,7 +192,7 @@ chroot "$ROOTFS_DIR" bash -c '
apt-get install -y code
apt-get clean
' 2>&1 | tail -30
'
echo "[+] Setting up dev runtime launchers..."
mkdir -p "$ROOTFS_DIR/opt/aethex/runtimes/linux-dev"
@ -226,7 +228,7 @@ echo "[+] Setting up AeThex Desktop application..."
# Build mobile app if possible
if [ -f "package.json" ]; then
echo " Building AeThex mobile app..."
npm run build 2>&1 | tail -5 || echo " Build skipped"
npm run build || echo " Build skipped"
fi
# Copy app files
@ -247,7 +249,7 @@ if [ -d "client" ] && [ -d "server" ]; then
fi
echo " Installing dependencies..."
chroot "$ROOTFS_DIR" bash -c 'cd /opt/aethex-desktop && npm install --production --legacy-peer-deps' 2>&1 | tail -10 || true
chroot "$ROOTFS_DIR" bash -c 'cd /opt/aethex-desktop && npm install --production --legacy-peer-deps' || true
else
echo " (client/server not found; skipping)"
fi
@ -312,6 +314,20 @@ X-GNOME-Autostart-enabled=true
Comment=Launch AeThex mobile interface in fullscreen
EOF
# Create Install Shortcut
mkdir -p "$ROOTFS_DIR/home/aethex/Desktop"
cat > "$ROOTFS_DIR/home/aethex/Desktop/install-aethex.desktop" << 'EOF'
[Desktop Entry]
Name=Install AeThex OS
Comment=Install this system permanently to your hard drive
Exec=sudo ubiquity
Icon=ubiquity
Terminal=false
Type=Application
Categories=System;
EOF
chmod +x "$ROOTFS_DIR/home/aethex/Desktop/install-aethex.desktop"
chroot "$ROOTFS_DIR" chown -R aethex:aethex /home/aethex /opt/aethex-desktop 2>/dev/null || true
echo ""
@ -326,7 +342,7 @@ chroot "$ROOTFS_DIR" bash -c '
KERNEL_VERSION=$(ls /boot/vmlinuz-* | sed "s|/boot/vmlinuz-||" | head -n 1)
echo " Rebuilding initramfs for kernel $KERNEL_VERSION with casper..."
update-initramfs -u -k "$KERNEL_VERSION"
' 2>&1 | tail -10
'
echo "[+] Extracting kernel and initrd..."
KERNEL="$(ls -1 $ROOTFS_DIR/boot/vmlinuz-* 2>/dev/null | head -n 1)"
@ -359,23 +375,23 @@ umount -lf "$ROOTFS_DIR/dev" 2>/dev/null || true
echo "[+] Creating SquashFS filesystem..."
echo " (compressing ~4-5GB system, takes 15-20 minutes...)"
mksquashfs "$ROOTFS_DIR" "$ISO_DIR/casper/filesystem.squashfs" -b 1048576 -comp xz -Xdict-size 100% 2>&1 | tail -5
mksquashfs "$ROOTFS_DIR" "$ISO_DIR/casper/filesystem.squashfs" -b 1048576 -comp xz -Xdict-size 100%
echo "[+] Setting up BIOS boot (isolinux)..."
cat > "$ISO_DIR/isolinux/isolinux.cfg" << 'EOF'
PROMPT 0
TIMEOUT 50
PROMPT 1
TIMEOUT 100
DEFAULT linux
LABEL linux
MENU LABEL AeThex OS - Full Stack
KERNEL /casper/vmlinuz
APPEND initrd=/casper/initrd.img boot=casper quiet splash ---
APPEND initrd=/casper/initrd.img boot=casper username=aethex quiet splash ---
LABEL safe
MENU LABEL AeThex OS - Safe Mode (No ACPI)
MENU LABEL AeThex OS - Safe Mode (Graphics Fix)
KERNEL /casper/vmlinuz
APPEND initrd=/casper/initrd.img boot=casper acpi=off noapic nomodeset ---
APPEND initrd=/casper/initrd.img boot=casper username=aethex nomodeset ---
EOF
cp /usr/lib/syslinux/isolinux.bin "$ISO_DIR/isolinux/" 2>/dev/null || \
@ -389,23 +405,23 @@ set timeout=10
set default=0
menuentry "AeThex OS - Full Stack" {
linux /casper/vmlinuz boot=casper quiet splash ---
linux /casper/vmlinuz boot=casper username=aethex quiet splash ---
initrd /casper/initrd.img
}
menuentry "AeThex OS - Safe Mode (No ACPI)" {
linux /casper/vmlinuz boot=casper acpi=off noapic nomodeset ---
menuentry "AeThex OS - Safe Mode (Graphics Fix)" {
linux /casper/vmlinuz boot=casper username=aethex nomodeset ---
initrd /casper/initrd.img
}
menuentry "AeThex OS - Debug Mode" {
linux /casper/vmlinuz boot=casper debug ignore_loglevel earlyprintk=vga ---
linux /casper/vmlinuz boot=casper username=aethex debug ignore_loglevel earlyprintk=vga ---
initrd /casper/initrd.img
}
EOF
echo "[+] Creating hybrid ISO..."
grub-mkrescue -o "$BUILD_DIR/$ISO_NAME" "$ISO_DIR" --verbose 2>&1 | tail -20
grub-mkrescue -o "$BUILD_DIR/$ISO_NAME" "$ISO_DIR" --verbose
echo "[+] Computing SHA256 checksum..."
if [ -f "$BUILD_DIR/$ISO_NAME" ]; then

37
build-kernel.ps1 Normal file
View file

@ -0,0 +1,37 @@
#!/usr/bin/env pwsh
# AeThex OS - Unikernel Build Wrapper for Windows/WSL
Write-Host "═══════════════════════════════════════════════════════════════" -ForegroundColor Cyan
Write-Host " AeThex OS - Unikernel Builder (Windows -> WSL)" -ForegroundColor Cyan
Write-Host "═══════════════════════════════════════════════════════════════"
Write-Host ""
# 1. Check if OPS is installed in WSL
$checkOps = wsl bash -c "command -v ops"
if (-not $checkOps) {
Write-Host "[!] 'ops' is not installed in WSL." -ForegroundColor Red
Write-Host " Installing it now..." -ForegroundColor Yellow
wsl bash -c "curl https://ops.city/get.sh -sSfL | sh"
Write-Host "[OK] OPS Installed." -ForegroundColor Green
Write-Host ""
}
# 2. Convert line endings of the build script just in case
$scriptPath = "script/build-unikernel.sh"
if (Test-Path $scriptPath) {
(Get-Content $scriptPath) -join "`n" | Set-Content $scriptPath -NoNewline
}
# 3. Run the build inside WSL
# We explicitly set the working directory to the current folder mapped in WSL
Write-Host "[*] Building Kernel..." -ForegroundColor Yellow
wsl bash -c "cd '$PWD' && bash script/build-unikernel.sh"
if ($LASTEXITCODE -eq 0) {
Write-Host ""
Write-Host "[OK] Kernel Image Created Successfully!" -ForegroundColor Green
Write-Host " To run it, type: wsl ops run aethex-kernel-v1" -ForegroundColor Gray
} else {
Write-Host ""
Write-Host "[!] Build Failed." -ForegroundColor Red
}

44
build_and_run.log Normal file
View file

@ -0,0 +1,44 @@
> rest-express@1.0.0 build:kernel
> bash script/build-unikernel.sh
â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>
AeThex OS - Unikernel Builder
Target: Nanos Unikernel (Bootable Image)
â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>
[*] Detected Windows Environment (MinGW/Git Bash).
[*] Switching to WSL Context...
qemu-system-x86_64: terminating on signal 15 from pid 3662812 ()
<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>
AeThex OS - Unikernel Builder
Target: Nanos Unikernel (Bootable Image)
â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>
[*] Using OPS binary: /home/mrpiglr/.ops/bin/ops
[*] Updating OPS package list...
[*] Building Unikernel Image...
Running: /home/mrpiglr/.ops/bin/ops pkg load eyberg/node:v18.12.1 ...
warning: overwriting existing file "/dist/index.js" hostpath old: dist/index.js new: "/mnt/c/Users/PCOEM/AeThexOS/AeThex-OS//dist/index.js"
running local instance
booting /home/mrpiglr/.ops/images/aethex-kernel-v1 ...
[0.563567] en1: assigned 10.0.2.15
âš ï¸<EFBFBD> Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to Node.js 20 or later. For more information, visit: https://github.com/orgs/supabase/discussions/37217
[dotenv@17.2.3] injecting env (8) from .env -- tip: ðŸ”<C5B8> prevent building .env in docker: https://dotenvx.com/prebuild
[dotenv@17.2.3] injecting env (0) from .env -- tip: âš™ï¸<C3AF> write to custom object with { processEnv: myObject }
Warning: connect.session() MemoryStore is not
designed for a production environment, as it will leak
memory, and will not scale past a single process.
7:46:19 AM [websocket] WebSocket server initialized
7:46:19 AM [express] serving on port 8080
7:46:19 AM [websocket] WebSocket available at ws://localhost:8080/socket.io
[2.414827] en1: assigned FE80::2CC3:44FF:FEF8:D3F3
(node:2) ExperimentalWarning: The Fetch API is an experimental feature. This feature could change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
[✓] Build Complete.
Image: ~/.ops/images/aethex-kernel-v1
To boot the kernel:
/home/mrpiglr/.ops/bin/ops run aethex-kernel-v1
To deploy to AWS/GCP:
/home/mrpiglr/.ops/bin/ops image create -c ops.json -i aethex-kernel-v1 -t aws

72
build_and_run_clean.log Normal file
View file

@ -0,0 +1,72 @@
> rest-express@1.0.0 build:kernel
> bash script/build-unikernel.sh
═══════════════════════════════════════════════════════════════
AeThex OS - Unikernel Builder
Target: Nanos Unikernel (Bootable Image)
═══════════════════════════════════════════════════════════════
[*] Detected Windows Environment (MinGW/Git Bash).
[*] Switching to WSL Context...
[plugin vite:reporter]
(!) C:/Users/PCOEM/AeThexOS/AeThex-OS/node_modules/@capacitor/camera/dist/esm/index.js is dynamically imported by C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts but also statically imported by C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-native-features.ts, dynamic import will not move module into another chunk.


(!) Some chunks are larger than 500 kB after minification. Consider:
- Using dynamic import() to code-split the application
- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
dist\index.js 1.5mb
Done in 6064ms
qemu-system-x86_64: terminating on signal 15 from pid 3672638 (<unknown process>)
assets/holographic_digital_security_seal_for_certification-DujiIi4u.png  557.88 kB
../dist/public/assets/dark_subtle_digital_grid_texture-CW2Q0w3T.png  965.43 kB
../dist/public/assets/abstract_holographic_world_map_data_visualization-DA4sQHBK.png 1,343.40 kB
../dist/public/assets/dark_digital_circuit_board_background-CqDjO0Wd.png 1,577.40 kB
../dist/public/assets/index-C25YaYOI.css  226.22 kB │ gzip: 29.40 kB
../dist/public/assets/web-DZ3HkAbg.js  0.12 kB │ gzip: 0.13 kB
../dist/public/assets/web-DPJCvkTF.js  0.28 kB │ gzip: 0.23 kB
../dist/public/assets/web-a24r8sCo.js  0.36 kB │ gzip: 0.25 kB
../dist/public/assets/web-BPkARqmR.js  0.38 kB │ gzip: 0.25 kB
../dist/public/assets/web-DiUCUXaM.js  0.42 kB │ gzip: 0.20 kB
../dist/public/assets/web-jfjrrehZ.js  0.76 kB │ gzip: 0.35 kB
../dist/public/assets/web-DLPSmpR2.js  0.90 kB │ gzip: 0.46 kB
../dist/public/assets/web-D9jibmwr.js  0.90 kB │ gzip: 0.47 kB
../dist/public/assets/web-B4eFBhIm.js  1.06 kB │ gzip: 0.34 kB
../dist/public/assets/web-DjK0eNnT.js  1.15 kB │ gzip: 0.55 kB
../dist/public/assets/web-C68zp4qU.js  2.44 kB │ gzip: 1.09 kB
../dist/public/assets/web-CONwI-Dv.js  3.45 kB │ gzip: 1.10 kB
../dist/public/assets/web-BO91sTaU.js  8.67 kB │ gzip: 2.95 kB
../dist/public/assets/index-CJvwTLjS.js 1,766.52 kB │ gzip: 471.18 kB
✓ built in 23.30s
building server...
[*] Updating OPS package list...
[*] Building Unikernel Image...
Running: /home/mrpiglr/.ops/bin/ops pkg load eyberg/node:v18.12.1 ...
warning: overwriting existing file "/dist/index.js" hostpath old: dist/index.js new: "/mnt/c/Users/PCOEM/AeThexOS/AeThex-OS//dist/index.js"
running local instance
booting /home/mrpiglr/.ops/images/aethex-kernel-v1 ...
[0.670397] en1: assigned 10.0.2.15
⚠️ Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to Node.js 20 or later. For more information, visit: https://github.com/orgs/supabase/discussions/37217
[dotenv@17.2.3] injecting env (8) from .env -- tip: ⚙️ load multiple .env files with { path: ['.env.local', '.env'] }
[dotenv@17.2.3] injecting env (0) from .env -- tip: 🛠️ run anywhere with `dotenvx run -- yourcommand`
Warning: connect.session() MemoryStore is not
designed for a production environment, as it will leak
memory, and will not scale past a single process.
7:47:46 AM [websocket] WebSocket server initialized
7:47:46 AM [express] serving on port 8080
7:47:46 AM [websocket] WebSocket available at ws://localhost:8080/socket.io
[2.509299] en1: assigned FE80::D0DD:70FF:FE6F:CD82
(node:2) ExperimentalWarning: The Fetch API is an experimental feature. This feature could change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
[✓] Build Complete.
Image: ~/.ops/images/aethex-kernel-v1
To boot the kernel:
/home/mrpiglr/.ops/bin/ops run aethex-kernel-v1
To deploy to AWS/GCP:
/home/mrpiglr/.ops/bin/ops image create -c ops.json -i aethex-kernel-v1 -t aws

108
cache_fix_run.log Normal file
View file

@ -0,0 +1,108 @@
> rest-express@1.0.0 build:kernel
> bash script/build-unikernel.sh
═══════════════════════════════════════════════════════════════
AeThex OS - Unikernel Builder
Target: Nanos Unikernel (Bootable Image)
═══════════════════════════════════════════════════════════════
[*] Detected Windows Environment (MinGW/Git Bash).
[*] Switching to WSL Context...
[plugin vite:reporter]
(!) C:/Users/PCOEM/AeThexOS/AeThex-OS/node_modules/@capacitor/camera/dist/esm/index.js is dynamically imported by C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts but also statically imported by C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-native-features.ts, dynamic import will not move module into another chunk.


(!) Some chunks are larger than 500 kB after minification. Consider:
- Using dynamic import() to code-split the application
- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
dist\index.js 1.5mb
Done in 2791ms
qemu-system-x86_64: terminating on signal 15 from pid 838 (pkill)
m../dist/public/assets/holographic_digital_security_seal_for_certification-DujiIi4u.png  557.88 kB
../dist/public/assets/dark_subtle_digital_grid_texture-CW2Q0w3T.png  965.43 kB
../dist/public/assets/abstract_holographic_world_map_data_visualization-DA4sQHBK.png 1,343.40 kB
../dist/public/assets/dark_digital_circuit_board_background-CqDjO0Wd.png 1,577.40 kB
../dist/public/assets/index-C25YaYOI.css  226.22 kB │ gzip: 29.40 kB
../dist/public/assets/web-DZ3HkAbg.js  0.12 kB │ gzip: 0.13 kB
../dist/public/assets/web-DPJCvkTF.js  0.28 kB │ gzip: 0.23 kB
../dist/public/assets/web-a24r8sCo.js  0.36 kB │ gzip: 0.25 kB
../dist/public/assets/web-BPkARqmR.js  0.38 kB │ gzip: 0.25 kB
../dist/public/assets/web-DiUCUXaM.js  0.42 kB │ gzip: 0.20 kB
../dist/public/assets/web-jfjrrehZ.js  0.76 kB │ gzip: 0.35 kB
../dist/public/assets/web-DLPSmpR2.js  0.90 kB │ gzip: 0.46 kB
../dist/public/assets/web-D9jibmwr.js  0.90 kB │ gzip: 0.47 kB
../dist/public/assets/web-B4eFBhIm.js  1.06 kB │ gzip: 0.34 kB
../dist/public/assets/web-DjK0eNnT.js  1.15 kB │ gzip: 0.55 kB
../dist/public/assets/web-C68zp4qU.js  2.44 kB │ gzip: 1.09 kB
../dist/public/assets/web-CONwI-Dv.js  3.45 kB │ gzip: 1.10 kB
../dist/public/assets/web-BO91sTaU.js  8.67 kB │ gzip: 2.95 kB
../dist/public/assets/index-CJvwTLjS.js 1,766.52 kB │ gzip: 471.18 kB
✓ built in 11.40s
building server...
[*] Updating OPS package list...
[*] Building Unikernel Image...
Running: /home/mrpiglr/.ops/bin/ops pkg load eyberg/node:v18.12.1 ...
warning: overwriting existing file "/dist/index.js" hostpath old: dist/index.js new: "/mnt/c/Users/PCOEM/AeThexOS/AeThex-OS//dist/index.js"
running local instance
booting /home/mrpiglr/.ops/images/aethex-kernel-v1 ...
[0.354227] en1: assigned 10.0.2.15
⚠️ Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to Node.js 20 or later. For more information, visit: https://github.com/orgs/supabase/discussions/37217
[dotenv@17.2.3] injecting env (8) from .env -- tip: ⚙️ write to custom object with { processEnv: myObject }
[dotenv@17.2.3] injecting env (0) from .env -- tip: ⚙️ suppress all logs with { quiet: true }
Warning: connect.session() MemoryStore is not
designed for a production environment, as it will leak
memory, and will not scale past a single process.
9:33:49 AM [websocket] WebSocket server initialized
[DEBUG] Static File Setup - CWD: /, __dirname: /dist
[DEBUG] Final Static Path: /dist/public
[DEBUG] Found 19 assets in /dist/public/assets
9:33:49 AM [express] serving on port 8080
9:33:49 AM [websocket] WebSocket available at ws://localhost:8080/socket.io
[2.259727] en1: assigned FE80::98B4:A5FF:FE25:1725
(node:2) ExperimentalWarning: The Fetch API is an experimental feature. This feature could change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
9:34:36 AM [express] GET /api/auth/session 200 in 5ms :: {"authenticated":false}
9:34:36 AM [express] GET /api/os/notifications 200 in 206ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
Socket.IO client connected: YwylAs27kYZP1hH6AAAB
9:34:38 AM [express] GET /api/auth/session 304 in 4ms :: {"authenticated":false}
[DEBUG] SPA Fallback for: /mobile
[DEBUG] SPA Fallback for: /home
9:35:07 AM [express] GET /api/directory/architects 200 in 109ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
9:35:07 AM [express] GET /api/metrics 200 in 172ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
9:35:37 AM [express] GET /api/os/notifications 304 in 155ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
9:35:37 AM [express] POST /api/auth/login 200 in 271ms :: {"success":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","email":"mrpiglr@gmail.com","username":"MrPiglr","isAdmin":true}}
9:35:37 AM [express] GET /api/auth/session 304 in 1ms :: {"authenticated":false}
9:35:38 AM [express] GET /api/metrics 304 in 101ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
9:35:42 AM [express] POST /api/auth/login 200 in 215ms :: {"success":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","email":"mrpiglr@gmail.com","username":"MrPiglr","isAdmin":true}}
9:35:42 AM [express] GET /api/auth/session 304 in 1ms :: {"authenticated":false}
9:36:08 AM [express] GET /api/directory/architects 304 in 104ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
9:36:08 AM [express] GET /api/metrics 304 in 161ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
9:36:37 AM [express] GET /api/os/notifications 304 in 155ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
9:36:38 AM [express] GET /api/metrics 304 in 131ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
9:37:37 AM [express] GET /api/os/notifications 304 in 198ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
9:38:37 AM [express] GET /api/os/notifications 304 in 144ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
9:39:36 AM [express] GET /api/os/notifications 304 in 150ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
9:40:37 AM [express] GET /api/os/notifications 304 in 261ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
9:42:11 AM [express] GET /api/os/notifications 304 in 156ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
9:43:10 AM [express] GET /api/os/notifications 304 in 112ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
9:43:38 AM [express] GET /api/os/notifications 304 in 153ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
9:43:53 AM [express] GET /api/metrics 304 in 114ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
9:43:53 AM [express] GET /api/directory/architects 304 in 74ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
9:43:55 AM [express] POST /api/auth/login 200 in 263ms :: {"success":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","email":"mrpiglr@gmail.com","username":"MrPiglr","isAdmin":true}}
9:43:55 AM [express] GET /api/auth/session 304 in 0ms :: {"authenticated":false}
9:44:23 AM [express] GET /api/metrics 304 in 167ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
9:44:25 AM [express] POST /api/auth/login 200 in 237ms :: {"success":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","email":"mrpiglr@gmail.com","username":"MrPiglr","isAdmin":true}}
9:44:25 AM [express] GET /api/auth/session 304 in 0ms :: {"authenticated":false}
9:44:37 AM [express] GET /api/os/notifications 304 in 162ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
[✓] Build Complete.
Image: ~/.ops/images/aethex-kernel-v1
To boot the kernel:
/home/mrpiglr/.ops/bin/ops run aethex-kernel-v1
To deploy to AWS/GCP:
/home/mrpiglr/.ops/bin/ops image create -c ops.json -i aethex-kernel-v1 -t aws

View file

@ -10,26 +10,15 @@ const config: CapacitorConfig = {
appName: 'AeThex OS',
webDir: 'dist/public',
server: {
androidScheme: 'https',
iosScheme: 'https',
// Live reload: point to dev server instead of bundled assets
...(isLiveReload && {
url: serverUrl,
cleartext: true, // Allow HTTP for local development
}),
// androidScheme: 'http', // Disable explicit http scheme, let it fall back to file or default
url: undefined, // Ensure no server URL is set
cleartext: true,
},
plugins: {
SplashScreen: {
launchShowDuration: 2000,
launchShowDuration: 0,
launchAutoHide: true,
launchFadeOutDuration: 500,
backgroundColor: '#0a0a0a',
androidSplashResourceName: 'splash',
androidScaleType: 'CENTER_CROP',
showSpinner: true,
androidSpinnerStyle: 'small',
iosSpinnerStyle: 'small',
spinnerColor: '#DC2626',
backgroundColor: '#000000',
splashFullScreen: true,
splashImmersive: true
},
@ -65,15 +54,15 @@ const config: CapacitorConfig = {
captureInput: true,
webContentsDebuggingEnabled: true,
// Allow cleartext (HTTP) for live reload
...(isLiveReload && {
...(isLiveReload ? {
allowMixedContent: true,
}),
} : {}),
},
ios: {
// iOS-specific live reload settings
...(isLiveReload && {
...(isLiveReload ? {
limitsNavigationsToAppBoundDomains: false,
}),
} : {}),
},
};

View file

@ -1,6 +1,7 @@
// Service Worker for PWA functionality
const CACHE_NAME = 'aethex-v1';
const CACHE_NAME = 'aethex-v3';
const urlsToCache = [
'/',
'/mobile',
'/home',

28
client/public/test.html Normal file
View file

@ -0,0 +1,28 @@
<!DOCTYPE html>
<html>
<head>
<title>Test Page</title>
<style>
body {
background-color: #00FF00; /* Bright Green */
color: black;
font-size: 40px;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
}
</style>
</head>
<body>
<div>
<h1>TEST FILE LOADED</h1>
<p>If you see this, file access is working.</p>
</div>
<script>
console.log("Test file loaded successfully");
document.body.style.backgroundColor = "#00FF00";
</script>
</body>
</html>

View file

@ -153,8 +153,17 @@ export default function Terminal() {
]);
break;
case 'build':
case 'migrate-status':
case 'migrate':
case 'seed':
case 'test':
executeCliCommand(command);
break;
default:
setLines((prev) => [
...prev,
{
type: 'error',
@ -186,25 +195,25 @@ export default function Terminal() {
setCliStatus("idle");
};
const startCli = async () => {
const executeCliCommand = async (cmd: string) => {
if (cliStatus === "running") return;
setCliStatus("running");
appendCliLine('system', `▸ Running ${cliCommand}...`);
toast({ title: "CLI", description: `Started ${cliCommand}`, variant: "default" });
appendCliLine('system', `▸ Running ${cmd}...`);
toast({ title: "CLI", description: `Started ${cmd}`, variant: "default" });
try {
const res = await fetch('/api/admin/cli/start', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
credentials: 'include',
body: JSON.stringify({ command: cliCommand })
body: JSON.stringify({ command: cmd })
});
if (!res.ok) {
const text = await res.text();
appendCliLine('error', `Start failed: ${text || res.status}`);
setCliStatus("error");
toast({ title: "CLI Error", description: `Failed to start ${cliCommand}`, variant: "destructive" });
toast({ title: "CLI Error", description: `Failed to start ${cmd}`, variant: "destructive" });
return;
}
@ -222,15 +231,15 @@ export default function Terminal() {
es.addEventListener('error', (evt) => {
appendCliLine('error', 'Stream error');
setCliStatus("error");
toast({ title: "CLI Error", description: `Stream error for ${cliCommand}`, variant: "destructive" });
toast({ title: "CLI Error", description: `Stream error for ${cmd}`, variant: "destructive" });
es.close();
});
es.addEventListener('done', (evt) => {
const status = evt.data === 'success' ? 'done' : 'error';
setCliStatus(status as any);
appendCliLine(status === 'done' ? 'system' : 'error', `${cliLabel || cliCommand} ${status}`);
toast({ title: status === 'done' ? "CLI Success" : "CLI Failed", description: `${cliLabel || cliCommand} ${status}` });
appendCliLine(status === 'done' ? 'system' : 'error', `${data.label || cmd} ${status}`);
toast({ title: status === 'done' ? "CLI Success" : "CLI Failed", description: `${data.label || cmd} ${status}` });
es.close();
currentRunId.current = null;
});
@ -238,10 +247,13 @@ export default function Terminal() {
} catch (err) {
appendCliLine('error', 'Failed to start CLI command');
setCliStatus("error");
toast({ title: "CLI Error", description: `Failed to start ${cliCommand}`, variant: "destructive" });
toast({ title: "CLI Error", description: `Failed to start ${cmd}`, variant: "destructive" });
}
};
const startCli = () => executeCliCommand(cliCommand);
const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {
if (e.key === 'Enter') {
processCommand(input);

73
debug_run.log Normal file
View file

@ -0,0 +1,73 @@
> rest-express@1.0.0 build:kernel
> bash script/build-unikernel.sh
═══════════════════════════════════════════════════════════════
AeThex OS - Unikernel Builder
Target: Nanos Unikernel (Bootable Image)
═══════════════════════════════════════════════════════════════
[*] Detected Windows Environment (MinGW/Git Bash).
[*] Switching to WSL Context...
[plugin vite:reporter]
(!) C:/Users/PCOEM/AeThexOS/AeThex-OS/node_modules/@capacitor/camera/dist/esm/index.js is dynamically imported by C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts but also statically imported by C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-native-features.ts, dynamic import will not move module into another chunk.


(!) Some chunks are larger than 500 kB after minification. Consider:
- Using dynamic import() to code-split the application
- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
dist\index.js 1.5mb
Done in 463ms
m 4.62 kB │ gzip: 1.43 kB
../dist/public/assets/holographic_digital_security_seal_for_certification-DujiIi4u.png  557.88 kB
../dist/public/assets/dark_subtle_digital_grid_texture-CW2Q0w3T.png  965.43 kB
../dist/public/assets/abstract_holographic_world_map_data_visualization-DA4sQHBK.png 1,343.40 kB
../dist/public/assets/dark_digital_circuit_board_background-CqDjO0Wd.png 1,577.40 kB
../dist/public/assets/index-C25YaYOI.css  226.22 kB │ gzip: 29.40 kB
../dist/public/assets/web-DZ3HkAbg.js  0.12 kB │ gzip: 0.13 kB
../dist/public/assets/web-DPJCvkTF.js  0.28 kB │ gzip: 0.23 kB
../dist/public/assets/web-a24r8sCo.js  0.36 kB │ gzip: 0.25 kB
../dist/public/assets/web-BPkARqmR.js  0.38 kB │ gzip: 0.25 kB
../dist/public/assets/web-DiUCUXaM.js  0.42 kB │ gzip: 0.20 kB
../dist/public/assets/web-jfjrrehZ.js  0.76 kB │ gzip: 0.35 kB
../dist/public/assets/web-DLPSmpR2.js  0.90 kB │ gzip: 0.46 kB
../dist/public/assets/web-D9jibmwr.js  0.90 kB │ gzip: 0.47 kB
../dist/public/assets/web-B4eFBhIm.js  1.06 kB │ gzip: 0.34 kB
../dist/public/assets/web-DjK0eNnT.js  1.15 kB │ gzip: 0.55 kB
../dist/public/assets/web-C68zp4qU.js  2.44 kB │ gzip: 1.09 kB
../dist/public/assets/web-CONwI-Dv.js  3.45 kB │ gzip: 1.10 kB
../dist/public/assets/web-BO91sTaU.js  8.67 kB │ gzip: 2.95 kB
../dist/public/assets/index-CJvwTLjS.js 1,766.52 kB │ gzip: 471.18 kB
✓ built in 20.35s
building server...
[*] Updating OPS package list...
[*] Building Unikernel Image...
Running: /home/mrpiglr/.ops/bin/ops pkg load eyberg/node:v18.12.1 ...
warning: overwriting existing file "/dist/index.js" hostpath old: dist/index.js new: "/mnt/c/Users/PCOEM/AeThexOS/AeThex-OS//dist/index.js"
running local instance
booting /home/mrpiglr/.ops/images/aethex-kernel-v1 ...
[0.535697] en1: assigned 10.0.2.15
⚠️ Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to Node.js 20 or later. For more information, visit: https://github.com/orgs/supabase/discussions/37217
[dotenv@17.2.3] injecting env (8) from .env -- tip: 🗂️ backup and recover secrets: https://dotenvx.com/ops
[dotenv@17.2.3] injecting env (0) from .env -- tip: ⚙️ write to custom object with { processEnv: myObject }
Warning: connect.session() MemoryStore is not
designed for a production environment, as it will leak
memory, and will not scale past a single process.
8:23:30 AM [websocket] WebSocket server initialized
[DEBUG] Static File Setup - CWD: /, __dirname: /dist
[DEBUG] Final Static Path: /dist/public
[DEBUG] Found 19 assets in /dist/public/assets
8:23:30 AM [express] serving on port 8080
8:23:30 AM [websocket] WebSocket available at ws://localhost:8080/socket.io
[2.411799] en1: assigned FE80::88A5:54FF:FE60:88D0
(node:2) ExperimentalWarning: The Fetch API is an experimental feature. This feature could change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
[DEBUG] 404 for static asset: /assets/index-CLzw3Hhb.js
[DEBUG] 404 for static asset: /assets/index-CLzw3Hhb.js
[DEBUG] 404 for static asset: /assets/index-CLzw3Hhb.js
[DEBUG] 404 for static asset: /assets/index-CLzw3Hhb.js
[DEBUG] SPA Fallback for: /mobile
[DEBUG] SPA Fallback for: /home
[DEBUG] 404 for static asset: /assets/index-CLzw3Hhb.js

2
instance.log Normal file
View file

@ -0,0 +1,2 @@
booting aethex-kernel-v1-1770277813 ...
onprem instance 'aethex-kernel-v1-1770277813' created...

22
ops.json Normal file
View file

@ -0,0 +1,22 @@
{
"Args": ["/dist/index.js"],
"Dirs": [
"dist"
],
"Files": [
".env"
],
"Env": {
"NODE_ENV": "production",
"PORT": "8080"
},
"RunConfig": {
"Memory": "2G",
"CPUs": 2,
"Ports": ["8080"]
},
"CloudConfig": {
"ProjectID": "aethex-os",
"BucketName": "aethex-releases"
}
}

View file

@ -1,6 +1,6 @@
[Unit]
Description=AeThex Runtime Selector
After=graphical.target
After=network.target
Wants=aethex-desktop.service
[Service]

26
package-lock.json generated
View file

@ -129,6 +129,7 @@
"@vitest/ui": "^4.0.16",
"autoprefixer": "^10.4.21",
"concurrently": "^9.2.1",
"cross-env": "^10.1.0",
"drizzle-kit": "^0.31.4",
"esbuild": "^0.25.0",
"playwright-chromium": "^1.57.0",
@ -746,6 +747,13 @@
"dev": true,
"license": "Apache-2.0"
},
"node_modules/@epic-web/invariant": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz",
"integrity": "sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==",
"dev": true,
"license": "MIT"
},
"node_modules/@esbuild-kit/core-utils": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.3.2.tgz",
@ -5766,6 +5774,24 @@
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
"license": "MIT"
},
"node_modules/cross-env": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz",
"integrity": "sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@epic-web/invariant": "^1.0.0",
"cross-spawn": "^7.0.6"
},
"bin": {
"cross-env": "dist/bin/cross-env.js",
"cross-env-shell": "dist/bin/cross-env-shell.js"
},
"engines": {
"node": ">=20"
}
},
"node_modules/cross-spawn": {
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",

View file

@ -5,11 +5,12 @@
"license": "MIT",
"scripts": {
"dev:client": "vite dev --port 5000",
"dev": "NODE_ENV=development tsx server/index.ts",
"dev": "cross-env NODE_ENV=development tsx server/index.ts",
"dev:tauri": "cd shell/aethex-shell && npm run tauri dev",
"build": "tsx script/build.ts",
"build:tauri": "cd shell/aethex-shell && npm run tauri build",
"build:mobile": "npm run build && npx cap sync",
"build:kernel": "bash script/build-unikernel.sh",
"android": "npx cap open android",
"ios": "npx cap open ios",
"cap:live-reload": "tsx script/capacitor-live-reload.ts",
@ -17,7 +18,7 @@
"cap:live-reload:ios": "tsx script/capacitor-live-reload.ts --ios",
"cap:production": "tsx script/capacitor-production.ts",
"dev:mobile": "npm run cap:live-reload && concurrently \"npm run dev\" \"echo 'Dev server started. Open Android Studio or Xcode to run the app.'\"",
"start": "NODE_ENV=production node dist/index.js",
"start": "cross-env NODE_ENV=production node dist/index.js",
"check": "tsc",
"db:push": "drizzle-kit push",
"tauri": "cd shell/aethex-shell && npm run tauri",
@ -147,6 +148,7 @@
"@vitest/ui": "^4.0.16",
"autoprefixer": "^10.4.21",
"concurrently": "^9.2.1",
"cross-env": "^10.1.0",
"drizzle-kit": "^0.31.4",
"esbuild": "^0.25.0",
"playwright-chromium": "^1.57.0",

2
run.log Normal file
View file

@ -0,0 +1,2 @@
error: aethex-kernel-v1: stat /home/mrpiglr/.ops/aethex-kernel-v1: no such file or directory


1
run_full.log Normal file
View file

@ -0,0 +1 @@
2026/02/05 00:45:16 only ELF binaries are supported. Is this a Linux binary? run "file /home/mrpiglr/.ops/images/aethex-kernel-v1" on it

92
script/build-unikernel.sh Normal file
View file

@ -0,0 +1,92 @@
#!/bin/bash
set -e
# AeThex OS - Unikernel Build Script (OPS)
# Requires 'ops' (https://ops.city)
echo "═══════════════════════════════════════════════════════════════"
echo " AeThex OS - Unikernel Builder"
echo " Target: Nanos Unikernel (Bootable Image)"
echo "═══════════════════════════════════════════════════════════════"
# 0. Check for MinGW/Git Bash (Windows NPM environment)
if [ -n "$MSYSTEM" ] || [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "cygwin" ]]; then
echo "[*] Detected Windows Environment (MinGW/Git Bash)."
echo "[*] Switching to WSL Context..."
# Convert the current script path to a WSL path
# $0 is likely "script/build-unikernel.sh"
# We assume the current directory is the project root in Windows format, accessible via /mnt/c
# Simple re-execution in WSL, assuming we are at project root
wsl bash script/build-unikernel.sh
exit $?
fi
# Try to find 'ops' in various ways
OPS_CMD=""
# 1. Check if 'ops' is already in PATH
if command -v ops &> /dev/null; then
OPS_CMD="ops"
fi
# 2. Hardcoded check for known user 'mrpiglr' (The specific fix)
if [ -z "$OPS_CMD" ]; then
if [ -f "/home/mrpiglr/.ops/bin/ops" ]; then
OPS_CMD="/home/mrpiglr/.ops/bin/ops"
fi
fi
# 3. Check current user's Linux home
if [ -z "$OPS_CMD" ]; then
LINUX_USER=$(whoami)
if [ -f "/home/$LINUX_USER/.ops/bin/ops" ]; then
OPS_CMD="/home/$LINUX_USER/.ops/bin/ops"
fi
fi
# 4. Final check
if [ -z "$OPS_CMD" ]; then
echo "[!] OPS binary not found."
echo " Checked: PATH, /home/mrpiglr/.ops/bin/ops"
echo " Please run this command directly in your WSL terminal:"
echo " export PATH=\$PATH:\$HOME/.ops/bin"
echo " bash script/build-unikernel.sh"
exit 1
fi
echo "[*] Using OPS binary: $OPS_CMD"
if [ ! -d "dist" ]; then
echo "[!] 'dist' directory not found. Building project..."
npm run build
fi
echo "[*] Updating OPS package list..."
$OPS_CMD update
echo "[*] Building Unikernel Image..."
# Try fully qualified name format: account/package:version
PACKAGE="eyberg/node:v18.12.1"
echo " Running: $OPS_CMD pkg load $PACKAGE ..."
if ! $OPS_CMD pkg load $PACKAGE -c ops.json -i aethex-kernel-v1; then
echo "[!] $PACKAGE failed."
# Fallback to another format seen in the list
PACKAGE="eyberg/node:20.5.0"
echo " Trying fallback: $PACKAGE ..."
$OPS_CMD pkg load $PACKAGE -c ops.json -i aethex-kernel-v1
fi
echo ""
echo "[✓] Build Complete."
echo " Image: ~/.ops/images/aethex-kernel-v1"
echo ""
echo "To boot the kernel:"
echo " $OPS_CMD run aethex-kernel-v1"
echo ""
echo "To deploy to AWS/GCP:"
echo " $OPS_CMD image create -c ops.json -i aethex-kernel-v1 -t aws"

View file

@ -6,10 +6,13 @@ import { rm, readFile } from "fs/promises";
// which helps cold start times
const allowlist = [
"@google/generative-ai",
"@supabase/supabase-js",
"axios",
"bcrypt",
"connect-pg-simple",
"cors",
"date-fns",
"dotenv",
"drizzle-orm",
"drizzle-zod",
"express",
@ -24,6 +27,7 @@ const allowlist = [
"passport",
"passport-local",
"pg",
"socket.io",
"stripe",
"uuid",
"ws",
@ -56,7 +60,7 @@ async function buildAll() {
entryPoints: ["server/index.ts"],
platform: "node",
bundle: true,
format: "esm",
format: "cjs",
outfile: "dist/index.js",
define: {
"process.env.NODE_ENV": '"production"',
@ -65,9 +69,6 @@ async function buildAll() {
sourcemap: enableSourcemap,
external: externals,
logLevel: "info",
banner: {
js: "import { createRequire } from 'module'; import { fileURLToPath } from 'url'; import { dirname } from 'path'; const require = createRequire(import.meta.url); const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename);",
},
});
}

View file

@ -21,8 +21,11 @@ app.get("/health", (_req, res) => {
// API status endpoint (moved from root to /api/status)
app.get("/api/status", (_req, res) => {
const isKernel = process.env.OPS_Version ? true : false;
res.json({
status: "AeThex OS Kernel: ONLINE",
status: isKernel ? "AeThex OS Unikernel: ONLINE" : "AeThex OS Simulation: ONLINE",
mode: isKernel ? "KERNEL_NATIVE" : "HOSTED_SIMULATION",
version: "1.0.0",
endpoints: {
link: "/api/os/link/*",
@ -49,13 +52,22 @@ if (process.env.NODE_ENV === "production" && !sessionSecret) {
// Session configuration with security best practices
const isProduction = process.env.NODE_ENV === "production";
// For Unikernel local testing (localhost:8080), we must disable secure cookies
// because there is no SSL termination in the kernel itself yet.
// We detect if we are running in OPS/Nanos via the environment, or just assume
// that if we are "production" but not explicitly requiring HTTPS, we might be in a kernel.
// A safer check: if we are in OPS, process.env.OPS_Version might be present (if set),
// OR we can just relax this for now to fix the login loop.
const isSecure = isProduction && process.env.REQUIRE_HTTPS === "true";
app.use(
session({
secret: sessionSecret || "dev-only-secret-not-for-prod",
resave: false,
saveUninitialized: false,
cookie: {
secure: isProduction,
secure: isSecure,
httpOnly: true,
sameSite: "lax",
maxAge: 7 * 24 * 60 * 60 * 1000, // 7 days
@ -64,6 +76,7 @@ app.use(
})
);
app.use(
express.json({
verify: (req, _res, buf) => {

View file

@ -3,17 +3,32 @@ import fs from "fs";
import path from "path";
export function serveStatic(app: Express) {
const distPath = path.resolve(__dirname, "public");
// Robust path resolution for Unikernel environment
const cwd = process.cwd();
let distPath = path.resolve(__dirname, "public");
// Fallback: If __dirname based path fails, try relative to CWD
if (!fs.existsSync(distPath)) {
throw new Error(
`Could not find the build directory: ${distPath}, make sure to build the client first`,
);
// Assuming structure is /dist/public or just /public depending on how CWD is set
const altPath = path.join(cwd, "dist", "public");
if (fs.existsSync(altPath)) {
distPath = altPath;
} else {
// Try just "public" if CWD is already inside dist (unlikely but possible)
const rootPublic = path.join(cwd, "public");
if (fs.existsSync(rootPublic)) distPath = rootPublic;
}
}
if (!fs.existsSync(distPath)) {
throw new Error(`Could not find the build directory: ${distPath}`);
}
app.use(express.static(distPath));
// fall through to index.html if the file doesn't exist
app.use("*", (_req, res) => {
app.use("*", (req, res) => {
res.sendFile(path.resolve(distPath, "index.html"));
});
}

1
wget-log.4 Normal file
View file

@ -0,0 +1 @@
2026-02-05 03:04:55 URL:http://archive.ubuntu.com/ubuntu/pool/main/s/shadow/passwd_4.8.1-2ubuntu2_amd64.deb [766558/766558] -> "/mnt/c/Users/PCOEM/AeThexOS/AeThex-OS/aethex-linux-build/rootfs//var/cache/apt/archives/partial/passwd_1%3a4.8.1-2ubuntu2_amd64.deb" [1]