You are browsing as a guest. Sign up (or log in) to start making projects!

milo0622

@milo0622

Joined June 1st, 2026

  • 13Devlogs
  • 2Projects
  • 1Ships
  • 15Votes
Hi I'm Milo Chan from Hong Kong! I'm 14 years old, and I'm VERY interested in Linux, Python and web dev. I mainly create Linux distros and IoT projects for fun :) Feel free to give me opinions!
Open comments for this post

11h 46m 5s logged

Changelog

  • (e5c7d57) feat(media): Add playpause detection support on Windows
  • (0fcef7d) perf(import): Optimize term.py import speed
  • (170bc09) fix(media): Fix import error of GlobalSystemMediaTransportControlsSessionManager
  • (8ed4032) fix(media): Fix media import error and missing requirements
  • (7bd359e) fix(setup): Fix package installation ignorance of pip install
  • (a4e7bac) feat(setup): Add argument to setup.py to skip package installation and jump directly to configuration page
  • (62f5600) feat(setup): Add Windows automated setup installation
  • (dd043e5) feat(media): Add capability to read playing media on macOS and Windows
  • (e902e62) chore(readme): Change minimum Python version to 3.11
  • (3011897) fix(setup): Fix setup not exiting after Python version mismatch

Piston AI can finally execute two tools with one single response without crashing!

0
0
13
Open comments for this post

5h 1m 15s logged

Commits for the last ~5 hours:
Commit a1b0e6:
feat(setup script): Add setup script to Piston AI

Commit aed445f:
fix(media): Add OS check before importing libraries

Commit e1b9ec4:
fix(error): Fix error handling in agent.py

Commit 0cdce18:
fix(wakeword): Fix wakeword initialization error on Linux devices

Commit a80cd11:
fix(media): Fix media playback error for Linux and Add distro-specific packages for setup script

b212ec3:
fix(setup): Fix unassociated API variable in setup.py

Commit 0f9ba15:
fix(ignored file): Remove .env file from files and previous staged changes

Commit 9c1251f:
fix(setup): Fix non-iterable error in setup.py

Commit 8649126:
fix(requirements file): Remove unused dependencies from requirements.txt and remove useless pycache

Commit 84a4d9c:
refactor(useless files): Remove unused depencies from requirements.txt and untrack useless pycache files from gitignore

0
0
4
Open comments for this post

11h 53m 41s logged

Commits for the last 11.5 hours:

Commit 927f3ba:
feat(agent): add multi-provider support via LiteLLM

Commit 3502eda:
fix(weather fetch): Fix city name overwritting error

Commit 3671e97:
feat(pull): Add API for pulling files directly from GitHub/internet

Commit 98d8cc3:
feat(connectivity): Add connectivity checking to system health check and file download module

Commit fca6563:
feat(system prompt): Prompt AI to add [OPEN] and [CLOSE] tags to every conversation for better STT

Commit ee37f75:
feat(STT improvement): Add open return bool to main.py from agent.py to confirm STT continuity

Commit 4231249:
feat(SFX): Implement sound effects back to main.py

Commit df836eb:
fix(library import): Remove the import of a deleted module (normal.py)

Commit 90b6028:
feat(providers list): Add automatic fetching when providers file is not found

Commit ca73e74:
feat(tools): Add clipboard manager and connectivity check tools to Piston AI

Commit 3eac0f4:
feat(thinking mode): Add structurized thinking responses for supported models

Commit d55c4d4:
refactor(connectivity): Remove useless file

Commit 2b519df:
feat(ytdlp): Add YouTube Music playback support to Piston AI

Commit 67da465:
feat(continuous tool calling): Add continuous tool calling to call more than one function per request

Commit 655312e:
feat(provider): Add NVIDIA support

Commit ed53111:
fix(websearch): Recover websearch tool back

Commit 11bd96f:
feat(providers): Add support to using .env files instead of editing the providers.json file

Commit f17cc42:
fix(tool calling): Fix infinite tool calling bug

0
0
7
Open comments for this post

10h 3m 21s logged

Commit messages in the past 9 hours:
Commit cbb3ecc:
feat(wakeword): Add wakeword engine (openwakeword)

Commit 927f3ba:
feat(agent): add multi-provider support via LiteLLM
Rewrite agent logic to support dynamic provider switching using LiteLLM endpoints.
Add provider and tool configuration files (providers.json, tool.json).

Commit 3502eda
fix(weather fetch): Fix city name overwritting error

0
0
7
Open comments for this post

9h 48m 36s logged

In this 9 hours of work, I’ve rewritten Piston AI… Again. But this, time, OOP is used much more than before, and more stable, with Jarvis’ voice, with British accents :)

0
0
3
Open comments for this post

9h 42m 55s logged

Alright. So in the past 8 hours, I’ve been working on the KMSDRM rendering for PythOS’ desktop. Since all apps will be called via standard execve, functions inside cannot be called directly from the main server. That’s where IPC comes in. Like GNOME, it pygui acts as a server that handles the custom made apps that contains the GUI APIs, and performs a communication back and forth to render the apps. The process is NOT easy, and got my brain frying.

0
0
6
Open comments for this post

7h 21m 14s logged

In this 6 hours’ work, I’ve added a handle to the windows for the user to drag them.
Various APIs were also added, such as buttons, text and images.

There is one more useful feature: window focusing. When multiple windows are added, you can focus on them by clicking on them just like normal OSes.

0
0
10
Open comments for this post

11h 23m 5s logged

In this 11 hours (shows 10 hours because of the limit of devlogs), I’ve worked on framebuffering with PyGame, it was kinda painful trying to learn writing GUI in a completely different language, but it’s kinda worth it and enjoyable :)

Also the theme of the GUI is based on Windows 98

0
0
9
Ship

This is a Linux distro written almost completely in Python!! What’s special about it, is that the whole Linux distro is compiled and assembled by me!!

Compared to previous versions in the previous repo, those all relied on other Linux distro shells. But this time, the shell and other programs in /bin is written in Python.

How it works:

  1. Boots grub bootloader
  2. Boots Linux kernel
  3. Loads init script
  4. Loads init.py from sbin/
  5. Tries to load pysh.py from bin/
    -> If fails or user exits pyshell, it falls back to init.py as a logon menu (written with ncurses)
  • This is a protection mechanism that prevents kernel panic (which needs us to force reboot the PC)

I’m really proud that my OS worked, and has always been my dream creating an up and running OS!!

  • 3 devlogs
  • 14h
  • 19.35x multiplier
  • 270 Stardust
Try project → See source code →
Open comments for this post

7h 1m 6s logged

After rewriting code for 7 hours and building the ISO file for more than 5 hours, I have finally built a bootable PythOS ISO file!!!

What I have rewritten, was pysh.py to optimize the shell.
I’ve also fixed a TypeError of PosixPath + str in ls.py.

How the OS works:

  1. Boots grub bootloader
  2. Boots Linux kernel
  3. Loads init script
  4. Loads init.py from sbin/
  5. Tries to load pysh.py from bin/
    -> If fails or user exits pyshell, it falls back to init.py as a logon menu (written with ncurses)
  • This is a protection mechanism that prevents kernel panic (which needs us to force reboot the PC)

How to dualboot:
(for Windows users. Skip if you know how to dualboot Linux, but please do not ignore step 6 when flashing):

Prerequisites:
Rufus (download from here)
PythOS ISO (download from the releases page)
A USB (at least 200MB)

Steps:

  1. Plug in your USB and run Rufus you have just downloaded
  2. Select your USB device in the “Device” dropdown menu
  3. In the “Boot selection” dropdown, select “Disk or ISO image (Please select)”
  4. Select PythOS ISO file
  5. Click START
  6. Select DD mode as the flash mode instead of ISO mode (ISO mode will NOT work) and click OK
  7. Wait for it to flash
  8. Reboot your computer after flashing and enter UEFI boot menu
  9. Select the USB flash drive
  10. Select PythOS Phoenix
  11. ENJOY!

NOTE:
If your computer uses legacy BIOS instead of UEFI, I’m sorry… I’ll be adding BIOS support very soon tho :)
Other architecture builds of the OS will be released very soon. The current supported arch is x86_64 (64-bit)

P.S. You might be wondering if you’ll need to type in “.py” for running my scripts in bin, you don’t. Simply type in the command without .py, it’ll be good to go. Of course you CAN type in .py if you want, but it would basically be your choice mate

0
0
8
Open comments for this post

12h 13m 17s logged

I’m rlly sorry that I haven’t posted a devlog for a long time.
But in the last 12 hours, I’ve used Python to add tools to the AI, STT and TTS to the whole program!
My efficiency is sometimes low, so forgive me for not posting a devlog for this long :loll:

Tools added to Piston AI:
web search,
weather fetching

0
0
12
Open comments for this post

4h 31m 15s logged

In this ~4.5 hours, I’ve added many commands to PythOS:
clear, date, ls, mkdir, touch, uname

And the most amazing thing I’ve done, is adding arguments and options :).
I do think that this project can let me learn a LOT more about Python, Linux and low-level things

0
0
27
Open comments for this post

2h 25m 51s logged

I’ve relaunched the project PythOS, a Linux distro but almost fully written in Python.

Instead of relying on init systems like BusyBox, it uses bare-minimum components:
a Linux kernel, musl library, Python library, and my own Python runtime (init systems are written by me in C)

I’ve actually worked on a project like this, also a Linux distro written in C, but back then, the distro relied on Alpine Linux as a base system.

This time I’m actually trying to create the Linux distro myself :)

The image I’ve uploaded is a preview of the shell. It’s still run on my Linux VM as it’s not built into a system yet.

0
0
26

Followers

Loading…