|
11484
|
Zig-TextEditor by @ezxd1148 | Stardance
|
ezxd1148
|
0
|
2.38
|
0
|
[]
|
[{"post_id": 5801, "ts": "2026 [{"post_id": 5801, "ts": "2026-06-09T18:41:13Z", "hours": 1.6797, "text": "Day 2, I was facing a very hard problem where I fought a bunch of error and successfully compiled the script. It does not work as what I was expecting it to… I thought it was because I used std.process.cleanExit(io) but after i changed it to std.process.exit(1) the problem persists. I decided to isolate the code above to a test file to confirm my problem. Weird….. i isolated related codes together and it works perfectly well in another script. I am now guessing it has something to do with the termios flags I set up. At the end of the day I only got test.zig to work properly when main.zig was supposed to be the main script"}, {"post_id": 5069, "ts": "2026-06-08T18:58:37Z", "hours": 0.7006, "text": "Today, things is going pretty well. The materials that I refer to is so well written I instantly understand what is being done. For handling inputs, I wrap read() stdin file with forever true loop (until q is inputted). I also played a bit with termios(terminal) flags to produce predictable and easy output to the terminal. Since the first part is pretty simple, it took me under 40 minutes to complete the code (with my broken laptop blacking out at a random interval). Tomorrow, I will first properly print things to the terminal without using std.debug.print. Since I haven’t done that (i used std.debug.print all of the time) This might be a challenge for me to face. After that, I will follow the materials until i reached the end of second part."}]...
|
Title: Zig-TextEditor by @ezxd1148 | Stardance
De Title: Zig-TextEditor by @ezxd1148 | Stardance
Devlogs:
Today, things is going pretty well. The materials that I refer to is so well written I instantly understand what is being done. For handling inputs, I wrap read() stdin file with forever true loop (until q is inputted). I also played a bit with termios(terminal) flags to produce predictable and easy output to the terminal. Since the first part is pretty simple, it took me under 40 minutes to complete the code (with my broken laptop blacking out at a random interval). Tomorrow, I will first properly print things to the terminal without using std.debug.print. Since I haven’t done that (i used std.debug.print all of the time) This might be a challenge for me to face. After that, I will follow the materials until i reached the end of second part.
Day 2, I was facing a very hard problem where I fought a bunch of error and successfully compiled the script. It does not work as what I was expecting it to… I thought it was because I used std.process.cleanExit(io) but after i changed it to std.process.exit(1) the problem persists. I decided to isolate the code above to a test file to confirm my problem. Weird….. i isolated related codes together and it works perfectly well in another script. I am now guessing it has something to do with the termios flags I set up. At the end of the day I only got test.zig to work properly when main.zig was supposed to be the main script...
|
1794009282.083218
|
1794614082.083218
|
|
7761
|
Zico Chess Engine by @zico | Stardance
|
zico
|
1
|
11.0
|
97
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-09T23:06:12Z", "hours": 11.0, "multiplier": 9.01, "payout": 97, "blessing": "neutral", "text": "I created a chess-engine with a chess bot that plays smarter move by looking into the game by 3 steps or even more. Managing states was challenging to me at first cause the state was mutated which caused lot of error and missing piece so i cloned the board which makes it immutable. I’m proud because this project taught me a lot of things from state management to writing my first algorithm. You can check out my project at https://zico-chess-engine.vercel.app . My repo at https://github.com/young1dev/chess-engine", "repo": "https://github.com/young1dev/chess-engine", "demo": "https://zico-chess-engine.vercel.app"}]...
|
[{"post_id": 5944, "ts": "2026 [{"post_id": 5944, "ts": "2026-06-09T22:58:32Z", "hours": 7.8381, "text": "Added the min-max and alpha-beta pruning algorithm to enable the bot make smarter moves"}, {"post_id": 2605, "ts": "2026-06-05T06:52:56Z", "hours": 2.8917, "text": "I’m working on the v2 of my chessbot using the minmax algorithm and alpha beta pruning"}]...
|
Title: Zico Chess Engine by @zico | Stardance
Dev Title: Zico Chess Engine by @zico | Stardance
Devlogs:
I’m working on the v2 of my chessbot using the minmax algorithm and alpha beta pruning
Added the min-max and alpha-beta pruning algorithm to enable the bot make smarter moves
Ships:
I created a chess-engine with a chess bot that plays smarter move by looking into the game by 3 steps or even more. Managing states was challenging to me at first cause the state was mutated which caused lot of error and missing piece so i cloned the board which makes it immutable. I’m proud because this project taught me a lot of things from state management to writing my first algorithm. You can check out my project at https://zico-chess-engine.vercel.app . My repo at https://github.com/young1dev/chess-engine...
|
1793958633.5086362
|
1794045033.5086362
|
|
29999
|
ZiDi's-Website by @ZiDi | Stardance
|
ZiDi
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-12T17:52:50Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built my own personal website while trying to use as little AI as possible. This made the process more challenging, because sometimes I had to search through YouTube tutorials and forums to find solutions. The part I am most proud of is the Projects section, where I use the GitHub API to automatically display my repositories. Building this website was a really fun experience, and I would like to create more personal websites in the future.", "repo": "https://github.com/patriq128/my_personal_website", "demo": "https://zidi-site.netlify.app/"}]...
|
[{"post_id": 27258, "ts": "202 [{"post_id": 27258, "ts": "2026-07-12T17:31:09Z", "hours": 4.3572, "text": "This is my personal website built from scratch using HTML, CSS, and JavaScript. I created it with a dark theme using black and blood-red colors to give it a unique and modern style. The website contains several sections: Home — introduction and welcome page About — information about me and my interests Projects — automatically displays my GitHub projects Socials — links to my social media platforms The website is fully responsive and designed to work on both desktop and mobile devices. Love u :3"}]...
|
Title: ZiDi's-Website by @ZiDi | Stardance
De Title: ZiDi's-Website by @ZiDi | Stardance
Devlogs:
This is my personal website built from scratch using HTML, CSS, and JavaScript. I created it with a dark theme using black and blood-red colors to give it a unique and modern style. The website contains several sections: Home — introduction and welcome page About — information about me and my interests Projects — automatically displays my GitHub projects Socials — links to my social media platforms The website is fully responsive and designed to work on both desktop and mobile devices. Love u :3
Ships:
I built my own personal website while trying to use as little AI as possible. This made the process more challenging, because sometimes I had to search through YouTube tutorials and forums to find solutions. The part I am most proud of is the Projects section, where I use the GitHub API to automatically display my repositories. Building this website was a really fun experience, and I would like to create more personal websites in the future....
|
1793847168.5398052
|
1793933568.5398052
|
|
41141
|
ZiDi HackPad by @ZiDi | Stardance
|
ZiDi
|
0
|
6.68
|
0
|
[]
|
[{"post_id": 48817, "ts": "202 [{"post_id": 48817, "ts": "2026-08-17T11:08:06Z", "hours": 0.6789, "text": "Devlog #3 Documenting So, this is the last devlog before shipping! Today I was documenting the project. I tried to make the documentation as clean and easy to understand as possible, so you can hopefully get inspired by it when working on your own HackPad. The firmware for this project is a separate project called PadeXa : PadeXa So yeah, this is a pretty short devlog, but I think that’s all for now. Love u Below is a short screenshot of the README."}, {"post_id": 47581, "ts": "2026-08-15T15:46:16Z", "hours": 3.2717, "text": "Devlog #2 I finally finished the Case So at first, I wasn’t the best at 3D modeling, especially because I didn’t have a physical object to work with, so this was lowkey hard. I was using the Hackpad guide, so it wasn’t that hard, but I wasn’t using Fusion 360 but Onshape — mainly because I’m using Linux and I’ve already been using Onshape for a while. How it looks I tried to make it as small as possible, and I think I actually did a pretty good job with it. The edges are rounded, I made some space for the display and rotary encoder, and below them are the keys. I also added a hole for the USB-C connector. I also tried making holes for the screws and heat-set inserts for the first time, so it looks much cleaner and prettier. What I want to do next There are only two things left that I want to make: Firmware — I’m thinking about making a new project that will contain both the Hackpad firmware and a PC app. With the PC app, you will be able to configure every key, the display, the rotary encoder, and basically everything else. Since it will be open-source, you will also be able to add and configure everything yourself. The most important part is that the PC app will only be a configurator. Everything will be saved directly on the Hackpad, so the Hackpad will be able to work completely without the app. After I finish this, this will be the firmware I’ll use for my Hackpad. Documentation — I actually got inspiration and help from other Hackpad projects, and I want to give something back. I want to document everything so you guys don’t have to search everywhere for information. :) So, that’s everything for this devlog! I hope you like it. If you have any questions or ideas, feel free to leave a comment. I hope we’ll see each other in the next devlog or in my firmware project! Love u Below you can see 3D images of the case with the PCB inside."}, {"post_id": 46893, "ts": "2026-08-14T13:10:56Z", "hours": 2.7328, "text": "Devlog #1 So far, I have finished the PCB part. What my Hackpad has for now Keys — For the keyboard, I made a 2x3 layout with a matrix system. Rotary Encoder — This is going to be used for setting the volume, moving through modes, and other things. Display — For the display, I am using a 0.91-inch OLED display. This is going to be used for showing the status and current mode. Plans for the future Now that my PCB is done, I want to continue with: Case — I want to make a nice case for it, but I still don’t know what it’s going to look like. (I’m not really good at this, but everything is a first time!) Firmware — I’m going to make it in MicroPython, and I’m thinking about making a PC app for it so you can create new modes, customize your keys, and do other custom things. All changes are going to be saved on the device, so you actually don’t need to have the app running for the Hackpad to work. Yeah, I think that’s all for now. See you in the next Devlog! Below you can see the PCB."}]...
|
Title: ZiDi HackPad by @ZiDi | Stardance
Devlogs: Title: ZiDi HackPad by @ZiDi | Stardance
Devlogs:
Devlog #1 So far, I have finished the PCB part. What my Hackpad has for now Keys — For the keyboard, I made a 2x3 layout with a matrix system. Rotary Encoder — This is going to be used for setting the volume, moving through modes, and other things. Display — For the display, I am using a 0.91-inch OLED display. This is going to be used for showing the status and current mode. Plans for the future Now that my PCB is done, I want to continue with: Case — I want to make a nice case for it, but I still don’t know what it’s going to look like. (I’m not really good at this, but everything is a first time!) Firmware — I’m going to make it in MicroPython, and I’m thinking about making a PC app for it so you can create new modes, customize your keys, and do other custom things. All changes are going to be saved on the device, so you actually don’t need to have the app running for the Hackpad to work. Yeah, I think that’s all for now. See you in the next Devlog! Below you can see the PCB.
Devlog #2 I finally finished the Case So at first, I wasn’t the best at 3D modeling, especially because I didn’t have a physical object to work with, so this was lowkey hard. I was using the Hackpad guide, so it wasn’t that hard, but I wasn’t using Fusion 360 but Onshape — mainly because I’m using Linux and I’ve already been using Onshape for a while. How it looks I tried to make it as small as possible, and I think I actually did a pretty good job with it. The edges are rounded, I made some space for the display and rotary encoder, and below them are the keys. I also added a hole for the USB-C connector. I also tried making holes for the screws and heat-set inserts for the first time, so it looks much cleaner and prettier. What I want to do next There are only two things left that I want to make: Firmware — I’m thinking about making a new project that will contain both the Hackpad firmware and a PC app. With the PC app, you will be able to configure every key, the display, the rotary encoder, and basically everything else. Since it will be open-source, you will also be able to add and configure everything yourself. The most important part is that the PC app will only be a configurator. Everything will be saved directly on the Hackpad, so the Hackpad will be able to work completely without the app. After I finish this, this will be the firmware I’ll use for my Hackpad. Documentation — I actually got inspiration and help from other Hackpad projects, and I want to give something back. I want to document everything so you guys don’t have to search everywhere for information. :) So, that’s everything for this devlog! I hope you like it. If you have any questions or ideas, feel free to leave a comment. I hope we’ll see each other in the next devlog or in my firmware project! Love u Below you can see 3D images of the case with the PCB inside.
Devlog #3 Documenting So, this is the last devlog before shipping! Today I was documenting the project. I tried to make the documentation as clean and easy to understand as possible, so you can hopefully get inspired by it when working on your own HackPad. The firmware for this project is a separate project called PadeXa : PadeXa So yeah, this is a pretty short devlog, but I think that’s all for now. Love u Below is a short screenshot of the README....
|
1793541425.3978465
|
1794146225.3978465
|
|
395
|
ZhiXue Lite by @Makerlife | Stardance
|
Makerlife
|
2
|
25.0
|
79
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-25T12:56:28Z", "hours": 15.0, "multiplier": 1.97, "payout": 20, "blessing": "neutral", "text": "The Final Ship! [IMPORTANT]Since WAF is enabled on the backend, you may not be able to view the home page statistics properly. It is NOT a bug!!! You can log in to the site at demo/demo for a temporary preview. Please note that since my site retrieves and processes data from a third-party website, some content may still be in Chinese, and certain features may not be available with the shared account.", "repo": "https://github.com/amakerlife/ZhiXue-Lite-backend", "demo": "https://zxl.makerlife.top"}, {"ship_num": 2, "ts": "2026-07-05T14:04:31Z", "hours": 10.0, "multiplier": 5.7, "payout": 59, "blessing": "neutral", "text": "First release! In this update, I’ve strengthened backend authentication, added S3 support, and made some frontend optimizations. You can log in to the site at demo/demo for a temporary preview. Please note that since my site retrieves and processes data from a third-party website, some content may still be in Chinese, and certain features may not be available with the shared account. Since WAF is enabled on the backend, you may not be able to view the home page statistics properly.", "repo": "https://github.com/amakerlife/ZhiXue-Lite-backend", "demo": "https://zxl.makerlife.top"}]...
|
[{"post_id": 82615, "ts": "202 [{"post_id": 82615, "ts": "2026-10-25T12:53:46Z", "hours": 14.9442, "text": "This update adds S3 management APIs for viewing storage usage, listing cached answer sheets and score sheets, and deleting stored files. Exam results now have an all-scores API with pagination, filtering, search, and sorting. Score sheet export uses the VIEW_EXAM_DATA permission, with SCHOOL users limited to their own school. Administrators can now publish exams locally for individual schools before ZhiXue officially releases them. Students can access their own results when their scores are already stored. Score retrieval also handles missing totals and rankings while marking is still in progress. Answer sheets now show subquestion scores, step scores, and teacher scoring records more clearly, with improved indentation and positioning. The backend now requires Python 3.11 and uses psycopg 3. Dependencies were upgraded, and a database migration was added for per-school exam publication status."}, {"post_id": 22095, "ts": "2026-07-04T11:15:53Z", "hours": 6.275, "text": "Recently, on the backend, I added support for customizing the “from-address” for the SMTP service, rather than using the SMTP username directly as the sender’s email address as before. Additionally, to make the project more robust, I added support for S3 storage on the backend to store the generated answer sheets and score sheets, replacing the original local file system cache. Administrators can freely choose between the two options via environment variables. On the frontend, I first synchronized the changes related to the backend’s S3 storage support, then updated the loading animation to feature a logo that gradually changes in size as the central element, accompanied by a circular animation, replacing the previous simple Lucide React icon. Next, I will implement management features for S3 storage and synchronize the changes across both the front end and backend."}, {"post_id": 6877, "ts": "2026-06-11T15:13:25Z", "hours": 2.1092, "text": "This update fixes how the backend handles school_id in multi-school exam scenarios. Previously, some score and answersheet APIs accepted school_id from the client and used it during score lookup or teacher account selection. In multi-school exams, that could allow a SCHOOL-level user to query data outside their own school if the request parameters were crafted manually. The score and answer sheet APIs now resolve the effective student and school context on the server first. SELF users are always limited to their own bound student account, and any client-provided student_id, student_name, or school_id is ignored. SCHOOL users are always limited to their own school, even if another school_id is provided. GLOBAL users can still use school_id as an optional filter. Student name based lookup no longer requires school_id. The backend searches within the current user’s accessible scope. If multiple students match the same name, the error message now includes both school and class information for disambiguation. Score sheet export was also tightened. SCHOOL users always export their own school’s data, and any provided school_id is ignored. GLOBAL users can still export all schools or a specific school. Since this is just a backend fix related to permissions, I can only provide screenshots of the code I modified."}, {"post_id": 5554, "ts": "2026-06-09T11:44:43Z", "hours": 1.9978, "text": "In this update, I added a feature to the front end that remembers the user’s selection in this dropdown menu. In addition, I added a button to the exam details page so that users with the appropriate permissions can view more data about the exam directly in the “Data View” tab without having to copy and paste the exam_id. I fixed two race conditions caused by data desynchronization on the back end and manually cleaned up two rows of corrupted data from the prod database."}]...
|
Title: ZhiXue Lite by @Makerlife | Stardance
Devl Title: ZhiXue Lite by @Makerlife | Stardance
Devlogs:
In this update, I added a feature to the front end that remembers the user’s selection in this dropdown menu. In addition, I added a button to the exam details page so that users with the appropriate permissions can view more data about the exam directly in the “Data View” tab without having to copy and paste the exam_id. I fixed two race conditions caused by data desynchronization on the back end and manually cleaned up two rows of corrupted data from the prod database.
This update fixes how the backend handles school_id in multi-school exam scenarios. Previously, some score and answersheet APIs accepted school_id from the client and used it during score lookup or teacher account selection. In multi-school exams, that could allow a SCHOOL-level user to query data outside their own school if the request parameters were crafted manually. The score and answer sheet APIs now resolve the effective student and school context on the server first. SELF users are always limited to their own bound student account, and any client-provided student_id, student_name, or school_id is ignored. SCHOOL users are always limited to their own school, even if another school_id is provided. GLOBAL users can still use school_id as an optional filter. Student name based lookup no longer requires school_id. The backend searches within the current user’s accessible scope. If multiple students match the same name, the error message now includes both school and class information for disambiguation. Score sheet export was also tightened. SCHOOL users always export their own school’s data, and any provided school_id is ignored. GLOBAL users can still export all schools or a specific school. Since this is just a backend fix related to permissions, I can only provide screenshots of the code I modified.
Recently, on the backend, I added support for customizing the “from-address” for the SMTP service, rather than using the SMTP username directly as the sender’s email address as before. Additionally, to make the project more robust, I added support for S3 storage on the backend to store the generated answer sheets and score sheets, replacing the original local file system cache. Administrators can freely choose between the two options via environment variables. On the frontend, I first synchronized the changes related to the backend’s S3 storage support, then updated the loading animation to feature a logo that gradually changes in size as the central element, accompanied by a circular animation, replacing the previous simple Lucide React icon. Next, I will implement management features for S3 storage and synchronize the changes across both the front end and backend.
This update adds S3 management APIs for viewing storage usage, listing cached answer sheets and score sheets, and deleting stored files. Exam results now have an all-scores API with pagination, filtering, search, and sorting. Score sheet export uses the VIEW_EXAM_DATA permission, with SCHOOL users limited to their own school. Administrators can now publish exams locally for individual schools before ZhiXue officially releases them. Students can access their own results when their scores are already stored. Score retrieval also handles missing totals and rankings while marking is still in progress. Answer sheets now show subquestion scores, step scores, and teacher scoring records more clearly, with improved indentation and positioning. The backend now requires Python 3.11 and uses psycopg 3. Dependencies were upgraded, and a database migration was added for per-school exam publication status.
Ships:
First release! In this update, I’ve strengthened backend authentication, added S3 support, and made some frontend optimizations. You can log in to the site at demo/demo for a temporary preview. Please note that since my site retrieves and processes data from a third-party website, some content may still be in Chinese, and certain features may not be available with the shared account. Since WAF is enabled on the backend, you may not be able to view the home page statistics properly.
The Final Ship! [IMPORTANT]Since WAF is enabled on the backend, you may not be able to view the home page statistics properly. It is NOT a bug!!! You can log in to the site at demo/demo for a temporary preview. Please note that since my site retrieves and processes data from a third-party website, some content may still be in Chinese, and certain features may not be available with the shared account....
|
1793958624.4798896
|
1794045024.4798896
|
|
49281
|
Zeus zumper by @bestplayerforever399 | Stardance
|
bestplayerforever399
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Zeus zumper by @bestplayerforever399 | Star Title: Zeus zumper by @bestplayerforever399 | Stardance...
|
1794012732.65594
|
1794617532.65594
|
|
8499
|
Zeus AI by @Cheeselover90 | Stardance
|
Cheeselover90
|
0
|
0.88
|
0
|
[]
|
[{"post_id": 3332, "ts": "2026 [{"post_id": 3332, "ts": "2026-06-06T06:38:57Z", "hours": 0.8808, "text": "After spending nearly 30 minutes, I am making progress on the UI of Zeus AI. Your local LLM that works with your desktop and catches business errors while improving sales and business performance! Who would use this? Trying to get a good feel for the market ❤️"}]...
|
Title: Zeus AI by @Cheeselover90 | Stardance
Devl Title: Zeus AI by @Cheeselover90 | Stardance
Devlogs:
After spending nearly 30 minutes, I am making progress on the UI of Zeus AI. Your local LLM that works with your desktop and catches business errors while improving sales and business performance! Who would use this? Trying to get a good feel for the market ❤️...
|
1793342919.7655277
|
1793947719.7655277
|
|
6951
|
Zeus (ORC Robot) by @JakeThrun | Stardance
|
JakeThrun
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Zeus (ORC Robot) by @JakeThrun | Stardance
|
1793382797.4798574
|
1793987597.4798574
|
|
6779
|
Zeteroide by @LouisNotLuna | Stardance
|
LouisNotLuna
|
1
|
17.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-15T16:28:17Z", "hours": 17.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a simple meteorite shooter, to learn opengl and deepen my knowledge in zig. It is quite a basic game, but it helped to further my understanding.", "repo": "https://codeberg.org/LouisNotLuna/zeteroide", "demo": "https://youtu.be/Fz58MMCm2dk"}]...
|
[{"post_id": 9277, "ts": "2026 [{"post_id": 9277, "ts": "2026-06-15T16:03:54Z", "hours": 3.2778, "text": "I added a damage sound, lives and other stuff. Smoothing for positions, so we don’t get jumpy jumps from grid pos to grid pos. This way we get smooth animations. I also tidied up the code, made spawn rate and tick rate increase with play time. This project has taught me a lot of about graphics programming and opengl."}, {"post_id": 6486, "ts": "2026-06-10T22:07:37Z", "hours": 3.6086, "text": "I did the restructering, the game grid is now no longer stored allowing for more efficent and more efficent ticking. Ticking is now done globally and not per Slot. I also reintroduce some bugs :> that need fixing for the full code diff view github. Here is one of them:"}, {"post_id": 4554, "ts": "2026-06-07T22:00:31Z", "hours": 0.38, "text": "Implemented lives and death (window just closes for now). They are not yet rendering though. so you only get an image of lazygit today"}, {"post_id": 4250, "ts": "2026-06-07T14:30:31Z", "hours": 0.5539, "text": "Now we properly render the explosion texture, missing the meteorites makes them spawn in quicker. They finally disappear when hitting them bottom. No lives yet, that should be trivial to implement. Also added new sounds, for damage and hitting an meteorite"}, {"post_id": 3733, "ts": "2026-06-06T19:35:51Z", "hours": 1.0483, "text": "I got images working! It was a stupid mistake that renderdoc helped me solve. (Pro tip: if you have a projection matrix make sure to actually set it in the shader). It would be nice if I could make opengl hard error in such a case 🤔. As you can see it still not correctly rendered, but at least I see something."}, {"post_id": 3485, "ts": "2026-06-06T13:20:10Z", "hours": 2.3597, "text": "I am currently reworking the rendering pipeline, uhh and somehow a lot of stuff broke. Trying to figure out what I did wrong :dies:"}, {"post_id": 2883, "ts": "2026-06-05T19:39:30Z", "hours": 2.5653, "text": "I have been working on improving the codebase and added sound support, read up a lot on how SDL manages sound. And I needed to medal with nix flake dev env, because it was trying to use jack and didn’t see pipewire. The game doesn’t look much different, but here another screenshot."}, {"post_id": 2055, "ts": "2026-06-04T11:00:42Z", "hours": 2.3686, "text": "I got the basic game working, you can move around, shoot and destroy the meteroides. They don’t deal damage and just chill at the bottom when they reach it. I am not sure if I am happy with current system, as I use a 2d array of the size of the game. Maybe I will change that. Explosions are also working. That is the big red blob that you see, they appear shortly after you shoot a meteroide and disappear after a second. Overall very fun, next thing to add is gonna be a score and lives."}, {"post_id": 1987, "ts": "2026-06-04T07:52:50Z", "hours": 0.8536, "text": "I have been wanting to learn rendering for some time, I decided a good way was to create a little game with opengl and zig, as I am already knowledgeable about that language. The screenshot you see is the current game state, it has been very fun so far and I plan to do more. Doesn’t look to pretty yet, but I plan to work more on this. I have already learned a lot about opengl and rendering."}]...
|
Title: Zeteroide by @LouisNotLuna | Stardance
Dev Title: Zeteroide by @LouisNotLuna | Stardance
Devlogs:
I have been wanting to learn rendering for some time, I decided a good way was to create a little game with opengl and zig, as I am already knowledgeable about that language. The screenshot you see is the current game state, it has been very fun so far and I plan to do more. Doesn’t look to pretty yet, but I plan to work more on this. I have already learned a lot about opengl and rendering.
I got the basic game working, you can move around, shoot and destroy the meteroides. They don’t deal damage and just chill at the bottom when they reach it. I am not sure if I am happy with current system, as I use a 2d array of the size of the game. Maybe I will change that. Explosions are also working. That is the big red blob that you see, they appear shortly after you shoot a meteroide and disappear after a second. Overall very fun, next thing to add is gonna be a score and lives.
I have been working on improving the codebase and added sound support, read up a lot on how SDL manages sound. And I needed to medal with nix flake dev env, because it was trying to use jack and didn’t see pipewire. The game doesn’t look much different, but here another screenshot.
I am currently reworking the rendering pipeline, uhh and somehow a lot of stuff broke. Trying to figure out what I did wrong :dies:
I got images working! It was a stupid mistake that renderdoc helped me solve. (Pro tip: if you have a projection matrix make sure to actually set it in the shader). It would be nice if I could make opengl hard error in such a case 🤔. As you can see it still not correctly rendered, but at least I see something.
Now we properly render the explosion texture, missing the meteorites makes them spawn in quicker. They finally disappear when hitting them bottom. No lives yet, that should be trivial to implement. Also added new sounds, for damage and hitting an meteorite
Implemented lives and death (window just closes for now). They are not yet rendering though. so you only get an image of lazygit today
I did the restructering, the game grid is now no longer stored allowing for more efficent and more efficent ticking. Ticking is now done globally and not per Slot. I also reintroduce some bugs :> that need fixing for the full code diff view github. Here is one of them:
I added a damage sound, lives and other stuff. Smoothing for positions, so we don’t get jumpy jumps from grid pos to grid pos. This way we get smooth animations. I also tidied up the code, made spawn rate and tick rate increase with play time. This project has taught me a lot of about graphics programming and opengl.
Ships:
I made a simple meteorite shooter, to learn opengl and deepen my knowledge in zig. It is quite a basic game, but it helped to further my understanding....
|
1793897365.7872374
|
1793983765.7872374
|
|
44885
|
ZetaPrime by @lix | Stardance
|
lix
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ZetaPrime by @lix | Stardance
|
1794038133.4367824
|
1794642933.4367824
|
|
57906
|
Zerya Foundation Website by @Sanielia | Stardance
|
Sanielia
|
0
|
6.67
|
0
|
[]
|
[{"post_id": 63649, "ts": "202 [{"post_id": 63649, "ts": "2026-09-07T15:58:14Z", "hours": 4.3925, "text": "4 more hours working on the project I have mostly finished general clean up, added CMS system, mostly configured SEO and added beatiful schemaOrg. Also along the way website primary color changed due to Zerya introducing custom colors for its sections and we finally have foundation logo instead of main Zerya one!"}, {"post_id": 61701, "ts": "2026-09-04T18:57:40Z", "hours": 2.2783, "text": "I have finished cleanup of visual implementation of the website. What I will do next is adding actual CSM and integrating it with news and projects pages as well as optimizations like adding Nuxt Image and working on Nuxt SEO config"}]...
|
Title: Zerya Foundation Website by @Sanielia | Sta Title: Zerya Foundation Website by @Sanielia | Stardance
Devlogs:
I have finished cleanup of visual implementation of the website. What I will do next is adding actual CSM and integrating it with news and projects pages as well as optimizations like adding Nuxt Image and working on Nuxt SEO config
4 more hours working on the project I have mostly finished general clean up, added CMS system, mostly configured SEO and added beatiful schemaOrg. Also along the way website primary color changed due to Zerya introducing custom colors for its sections and we finally have foundation logo instead of main Zerya one!...
|
1793462098.291021
|
1794066898.291021
|
|
49847
|
Zervey by @WRECKERKNIGHT | Stardance
|
WRECKERKNIGHT
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Zervey by @WRECKERKNIGHT | Stardance
|
1794045157.1784842
|
1794649957.1784842
|
|
52795
|
Zertainity — AI Career Guidance Platform by @johan Zertainity — AI Career Guidance Platform by @johanmanoj2009 | Stardance...
|
johanmanoj2009
|
0
|
0.81
|
0
|
[]
|
[{"post_id": 53247, "ts": "202 [{"post_id": 53247, "ts": "2026-08-23T18:06:28Z", "hours": 0.8117, "text": "I’m building Zertainity, an AI-powered career guidance platform that helps students discover suitable career paths based on their interests, skills, academic performance, and goals. I’m working on making career exploration more personalized and practical for students."}]...
|
Title: Zertainity — AI Career Guidance Platform by Title: Zertainity — AI Career Guidance Platform by @johanmanoj2009 | Stardance
Devlogs:
I’m building Zertainity, an AI-powered career guidance platform that helps students discover suitable career paths based on their interests, skills, academic performance, and goals. I’m working on making career exploration more personalized and practical for students....
|
1793454964.3959498
|
1794059764.3959498
|
|
42465
|
Zerstörer by @Primem5 | Stardance
|
Primem5
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Zerstörer by @Primem5 | Stardance
|
1793865218.5281932
|
1794470018.5281932
|
|
61421
|
Zeromium by @rehankasim | Stardance
|
rehankasim
|
0
|
11.76
|
0
|
[]
|
[{"post_id": 67155, "ts": "202 [{"post_id": 67155, "ts": "2026-09-13T07:07:56Z", "hours": 11.7567, "text": "Zeromium just completed the network things was easy so did it first got another project so it not that my priority"}]...
|
Title: Zeromium by @rehankasim | Stardance
Devlog Title: Zeromium by @rehankasim | Stardance
Devlogs:
Zeromium just completed the network things was easy so did it first got another project so it not that my priority...
|
1793649074.0291798
|
1794253874.0291798
|
|
7293
|
Zerofiles by @franco | Stardance
|
franco
|
1
|
3.0
|
11
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T19:14:53Z", "hours": 3.0, "multiplier": 3.18, "payout": 11, "blessing": "neutral", "text": "Hey, i’ve made a Json Alternative called Zerofiles (.zr). I’ve made everything from 0 using only 2 libs and everything weighting a whoping 100kb so its also lightweight and fast. I am proud of making it a lossless, Custom AST engine which was kinda hard. So yeah. Run the test.py to test it.", "repo": "https://github.com/Franco-Senes/zerofiles", "demo": "https://github.com/Franco-Senes/zerofiles/blob/main/example.zr"}]...
|
[{"post_id": 3577, "ts": "2026 [{"post_id": 3577, "ts": "2026-06-06T16:04:00Z", "hours": 1.7214, "text": "Finished everything finally"}, {"post_id": 2512, "ts": "2026-06-05T01:23:20Z", "hours": 0.2669, "text": "I finally finished dumps and other stuff now we are going with ast & formatter classes :D"}, {"post_id": 2501, "ts": "2026-06-05T01:03:10Z", "hours": 0.7286, "text": "Finished my parser finally now we need to do loads and other functions so for now we are doing good"}, {"post_id": 2260, "ts": "2026-06-04T17:33:42Z", "hours": 0.4197, "text": "I ended implementing the comments now i need to actually add the json functionality"}, {"post_id": 2241, "ts": "2026-06-04T17:00:47Z", "hours": 0.3478, "text": "Implementing Json / Zerofiles The first step ill do for the projects is implementing json from 0 and adding a base for adding comments and other stuff. wish me luck"}]...
|
Title: Zerofiles by @franco | Stardance
Devlogs:
Title: Zerofiles by @franco | Stardance
Devlogs:
Implementing Json / Zerofiles The first step ill do for the projects is implementing json from 0 and adding a base for adding comments and other stuff. wish me luck
I ended implementing the comments now i need to actually add the json functionality
Finished my parser finally now we need to do loads and other functions so for now we are doing good
I finally finished dumps and other stuff now we are going with ast & formatter classes :D
Finished everything finally
Ships:
Hey, i’ve made a Json Alternative called Zerofiles (.zr). I’ve made everything from 0 using only 2 libs and everything weighting a whoping 100kb so its also lightweight and fast. I am proud of making it a lossless, Custom AST engine which was kinda hard. So yeah. Run the test.py to test it....
|
1793897636.83391
|
1793984036.83391
|
|
7156
|
Zerodeck (Portable emulation station) by @Jonathor Zerodeck (Portable emulation station) by @Jonathor | Stardance...
|
Jonathor
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Zerodeck (Portable emulation station) by @J Title: Zerodeck (Portable emulation station) by @Jonathor | Stardance...
|
1793411649.0089638
|
1794016449.0089638
|
|
10564
|
ZeroX - Cute Slack Bot! by @AuraZod | Stardance
|
AuraZod
|
1
|
3.3
|
5
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-08T19:53:55Z", "hours": 3.0, "multiplier": 1.64, "payout": 5, "blessing": "neutral", "text": "A Simple Slack bot, Overall development was more of a fun than challenging but still had some issues with understanding the multiple token and slashes being registered separetly. I’m proud of how i handled the project even tho it was my first time working with bolt js (where i work mostly in python). you can test out the bot in HackClub Slack Communiy with cmnds specified in readme or use /zr-help.", "repo": "https://github.com/AuraZod/ZeroX-SlackBot", "demo": "https://app.slack.com/client/E09V59WQY1E/C0B95V123TQ"}]...
|
[{"post_id": 5444, "ts": "2026 [{"post_id": 5444, "ts": "2026-06-09T06:57:42Z", "hours": 0.2961, "text": "Updated Bot’s repo & project to contain link to directly try out bot instead of just youtube video. Updated deployment method to also contain guide for pm2. Specified ai usage in readme. you can try the bot here : https://app.slack.com/client/E09V59WQY1E/C0B95V123TQ"}, {"post_id": 5096, "ts": "2026-06-08T19:44:54Z", "hours": 3.2167, "text": "been working on the zerox slack bot transition. struggled with event subscriptions and socket mode on the dashboard since it kept asking for a request url — had to toggle socket mode first to bypass it. also had to invite the bot to the channel manually to get app_mention to trigger. rewrote the parser to clean the mention tag, colons, and spaces because it was throwing a fit and fallbacking to help menu. ran into background instances of node load balancing socket mode connection, killed them with stop-process to get it working. ask and roast commands updated to show the original prompt at the top. cleaned up deploy.md and slackbot.service for root systemd deployment. Finally made the first draft for it. bot is up and working. I was clueless at first on what to create for project on hackclub & then just made slack bot as it will give me idea on how things work. It was different and unique experience compared to discord bot developing (Which I mostly works on)."}]...
|
Title: ZeroX - Cute Slack Bot! by @AuraZod | Stard Title: ZeroX - Cute Slack Bot! by @AuraZod | Stardance
Devlogs:
been working on the zerox slack bot transition. struggled with event subscriptions and socket mode on the dashboard since it kept asking for a request url — had to toggle socket mode first to bypass it. also had to invite the bot to the channel manually to get app_mention to trigger. rewrote the parser to clean the mention tag, colons, and spaces because it was throwing a fit and fallbacking to help menu. ran into background instances of node load balancing socket mode connection, killed them with stop-process to get it working. ask and roast commands updated to show the original prompt at the top. cleaned up deploy.md and slackbot.service for root systemd deployment. Finally made the first draft for it. bot is up and working. I was clueless at first on what to create for project on hackclub & then just made slack bot as it will give me idea on how things work. It was different and unique experience compared to discord bot developing (Which I mostly works on).
Updated Bot’s repo & project to contain link to directly try out bot instead of just youtube video. Updated deployment method to also contain guide for pm2. Specified ai usage in readme. you can try the bot here : https://app.slack.com/client/E09V59WQY1E/C0B95V123TQ
Ships:
A Simple Slack bot, Overall development was more of a fun than challenging but still had some issues with understanding the multiple token and slashes being registered separetly. I’m proud of how i handled the project even tho it was my first time working with bolt js (where i work mostly in python). you can test out the bot in HackClub Slack Communiy with cmnds specified in readme or use /zr-help....
|
1793933781.3196504
|
1794020181.3196504
|
|
52740
|
ZeroWave by @raajk | Stardance
|
raajk
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ZeroWave by @raajk | Stardance
|
1793454592.4231813
|
1794059392.4231813
|
|
36671
|
ZeroTrace by @franco | Stardance
|
franco
|
0
|
2.31
|
0
|
[]
|
[{"post_id": 32077, "ts": "202 [{"post_id": 32077, "ts": "2026-07-20T23:58:15Z", "hours": 1.4283, "text": "I will abandon zerotrace for now First of all why? I got an idea for a project i really wanna work on for creating your own local ai servers. Its going to be called samaipata. Got this logo from font awesome for the project"}, {"post_id": 30794, "ts": "2026-07-18T18:02:12Z", "hours": 0.8831, "text": "Zerotrace Hello dear user, today i am making an sdk/api called zerotrace to track events and errors in a more concise way. Today i started doing the sdks for: Python Node.js But it wasnt that difficult. My next step will be making the server with the database and all of that. Here is the diagram and some proof i made the sdks: Devlog #1"}]...
|
Title: ZeroTrace by @franco | Stardance
Devlogs:
Title: ZeroTrace by @franco | Stardance
Devlogs:
Zerotrace Hello dear user, today i am making an sdk/api called zerotrace to track events and errors in a more concise way. Today i started doing the sdks for: Python Node.js But it wasnt that difficult. My next step will be making the server with the database and all of that. Here is the diagram and some proof i made the sdks: Devlog #1
I will abandon zerotrace for now First of all why? I got an idea for a project i really wanna work on for creating your own local ai servers. Its going to be called samaipata. Got this logo from font awesome for the project...
|
1793947675.3513272
|
1794811675.3513272
|
|
21629
|
ZeroTouch by @JoonHyuk | Stardance
|
JoonHyuk
|
0
|
12.87
|
0
|
[]
|
[{"post_id": 27470, "ts": "202 [{"post_id": 27470, "ts": "2026-07-13T02:08:11Z", "hours": 4.7997, "text": "Made some more models for practice and I am going to make a deep learning model and not use librarys to make a stt model"}, {"post_id": 14872, "ts": "2026-06-24T04:28:28Z", "hours": 5.4603, "text": "Practices more data organizing and made my first ever machine learning model"}, {"post_id": 11656, "ts": "2026-06-19T00:12:21Z", "hours": 2.6056, "text": "Screen Keyboard done and working on Z-score and IQR"}]...
|
Title: ZeroTouch by @JoonHyuk | Stardance
Devlogs Title: ZeroTouch by @JoonHyuk | Stardance
Devlogs:
Screen Keyboard done and working on Z-score and IQR
Practices more data organizing and made my first ever machine learning model
Made some more models for practice and I am going to make a deep learning model and not use librarys to make a stt model...
|
1794005431.8674474
|
1794610231.8674474
|
|
54703
|
ZeroTab by @Akkorpy | Stardance
|
Akkorpy
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-30T20:02:50Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Finally! All the projects are done for now. Unfortunately, I had to finish ZeroTab very quickly as there is almost no time. Nevertheless, ZeroTab is a simple and very minimalistic modern new tab. It contains an information about NASA’s APODs through its API. Visual is fine and also features a search area. Weather widget is under development…", "repo": "https://github.com/Akkorpy/ZeroTab", "demo": "https://akkorpy.github.io/ZeroTab/"}]...
|
[{"post_id": 85014, "ts": "202 [{"post_id": 85014, "ts": "2026-10-30T19:27:46Z", "hours": 3.9053, "text": "The main part is done. It looks pretty simple and looks fine. I’ll ship it now as there is almost no time. And honestly, I used Claude and Gemini to learn how to make it as I had a litttle to make it and ship, so used them for debugging and sometimes for visuals. I hope I’ll finis hit in the future and by solely myself"}, {"post_id": 82719, "ts": "2026-10-25T17:34:03Z", "hours": 2.5542, "text": "Made basic style for now, the main part is done. I’ll add some new features like clock and greeting, search bar and some small animations. The only problem I ran into was that NASA API often returns 500 errors (their server, not my code). It also keeps returning the NASA logo and the title “NASA Science” instead of the real picture and title. Claude helped with some debugging and layout issues."}]...
|
Title: ZeroTab by @Akkorpy | Stardance
Devlogs:
M Title: ZeroTab by @Akkorpy | Stardance
Devlogs:
Made basic style for now, the main part is done. I’ll add some new features like clock and greeting, search bar and some small animations. The only problem I ran into was that NASA API often returns 500 errors (their server, not my code). It also keeps returning the NASA logo and the title “NASA Science” instead of the real picture and title. Claude helped with some debugging and layout issues.
The main part is done. It looks pretty simple and looks fine. I’ll ship it now as there is almost no time. And honestly, I used Claude and Gemini to learn how to make it as I had a litttle to make it and ship, so used them for debugging and sometimes for visuals. I hope I’ll finis hit in the future and by solely myself
Ships:
Finally! All the projects are done for now. Unfortunately, I had to finish ZeroTab very quickly as there is almost no time. Nevertheless, ZeroTab is a simple and very minimalistic modern new tab. It contains an information about NASA’s APODs through its API. Visual is fine and also features a search area. Weather widget is under development…...
|
1793991120.88601
|
1794077520.88601
|
|
47024
|
ZeroPad by @Chaotic-Twigs | Stardance
|
Chaotic-Twigs
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ZeroPad by @Chaotic-Twigs | Stardance
|
1793825466.5189815
|
1794430266.5189815
|
|
20790
|
ZeroOS by @ZeroG | Stardance
|
ZeroG
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ZeroOS by @ZeroG | Stardance
|
1793944559.911535
|
1794808559.911535
|
|
18429
|
ZeroNet: Local communication system by @Harinandan ZeroNet: Local communication system by @HarinandanJV | Stardance...
|
HarinandanJV
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-17T15:19:11Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did I make? I built ZeroNet, a completely decentralized, zero configuration Local Area Network messenger with a nostalgic Windows 95 Graphical Interface and a dark themed terminal interface. It automatically finds users on your WiFi and establishes direct, end to end encrypted connections. What was challenging? The hardest part was solving network race conditions without a central server. I had to design a deterministic tie breaking system using unique device IDs to prevent duplicate connections when two peers discover each other simultaneously. What am I proud of? I am most proud of the custom PyQt6 GUI. I spent hours customizing the stylesheets to perfectly recreate the classic Windows 95 and ICQ aesthetic with gray panels, sharp bevels, and pixel fonts. What should people know so they can test my project? ZeroNet requires zero configuration to use. Just run the app on two computers connected to the same WiFi network, and they will automatically discover each other and exchange cryptographic keys.", "repo": "https://github.com/AwesomeSno/ZeroNet", "demo": "https://awesomesno.github.io/ZeroNet/"}]...
|
[{"post_id": 10673, "ts": "202 [{"post_id": 10673, "ts": "2026-06-17T15:10:58Z", "hours": 1.1172, "text": "ZeroNet: The Final Update (Retro GUI + Production Ready!) In my last devlog, I introduced ZeroNet: a serverless, peer to peer, end to end encrypted LAN messenger that runs entirely in the terminal. Since then, I’ve taken the project to the next level and built out the promised GUI, but with a massive twist! Here is what’s new in the final release of ZeroNet: A stunning Retro Windows 95 / ICQ themed Graphical Interface! I bypassed modern, boring UI trends and built a fully customized PyQt6 interface that looks straight out of the 90s, complete with classic bevels, gray panels, and pixel fonts. Bulletproof Networking: Solved complex race conditions! If two peers discover each other and try to connect at the exact same millisecond, ZeroNet now uses deterministic device ID tie breaking to drop the duplicate connection and keep the network stable. Upgraded Cryptography: Every single peer connection now generates a fresh, unique ephemeral secp256r1 keypair. Interactive Web Demo: I built a static GitHub Pages website with a CRT scanline effect and a simulated interactive terminal that mimics the real software’s key exchange and encrypted chat. Cross platform Polish: Hunted down and fixed a nasty PyQt6 platform plugin bug on macOS (caused by experimental Python 3.14 environments) to ensure the app boots flawlessly everywhere. ZeroNet is now a complete, production ready tool. You can chat securely on your local network using either the beautiful dark themed TUI or the nostalgic Windows 95 GUI. No servers. No cloud brokers. Just raw, encrypted, peer to peer communication. Check out the interactive demo on the GitHub page!"}, {"post_id": 8735, "ts": "2026-06-14T15:09:30Z", "hours": 0.8358, "text": "ZeroNet is a tool which enables direct, secure communication between devices on a local area network (LAN) without relying on external servers, third-party databases, or cloud brokers. Some of the features that I have implemented here are: -Automatically finds nearby ZeroNet devices using mDNS, no IP addresses to configure! -ECDH key exchange + Fernet symmetric encryption, no one can read your messages (End to end encrypted) -Direct P2P messaging over persistent TCP connections -Full-mesh group conversations where each message is individually encrypted per member -Stream files of any size with live progress bars, which are encrypted in transit -Beautiful GitHub Dark-themed TUI built with Textual (GUI also exits, will put up in the next dev-log)"}]...
|
Title: ZeroNet: Local communication system by @Har Title: ZeroNet: Local communication system by @HarinandanJV | Stardance
Devlogs:
ZeroNet is a tool which enables direct, secure communication between devices on a local area network (LAN) without relying on external servers, third-party databases, or cloud brokers. Some of the features that I have implemented here are: -Automatically finds nearby ZeroNet devices using mDNS, no IP addresses to configure! -ECDH key exchange + Fernet symmetric encryption, no one can read your messages (End to end encrypted) -Direct P2P messaging over persistent TCP connections -Full-mesh group conversations where each message is individually encrypted per member -Stream files of any size with live progress bars, which are encrypted in transit -Beautiful GitHub Dark-themed TUI built with Textual (GUI also exits, will put up in the next dev-log)
ZeroNet: The Final Update (Retro GUI + Production Ready!) In my last devlog, I introduced ZeroNet: a serverless, peer to peer, end to end encrypted LAN messenger that runs entirely in the terminal. Since then, I’ve taken the project to the next level and built out the promised GUI, but with a massive twist! Here is what’s new in the final release of ZeroNet: A stunning Retro Windows 95 / ICQ themed Graphical Interface! I bypassed modern, boring UI trends and built a fully customized PyQt6 interface that looks straight out of the 90s, complete with classic bevels, gray panels, and pixel fonts. Bulletproof Networking: Solved complex race conditions! If two peers discover each other and try to connect at the exact same millisecond, ZeroNet now uses deterministic device ID tie breaking to drop the duplicate connection and keep the network stable. Upgraded Cryptography: Every single peer connection now generates a fresh, unique ephemeral secp256r1 keypair. Interactive Web Demo: I built a static GitHub Pages website with a CRT scanline effect and a simulated interactive terminal that mimics the real software’s key exchange and encrypted chat. Cross platform Polish: Hunted down and fixed a nasty PyQt6 platform plugin bug on macOS (caused by experimental Python 3.14 environments) to ensure the app boots flawlessly everywhere. ZeroNet is now a complete, production ready tool. You can chat securely on your local network using either the beautiful dark themed TUI or the nostalgic Windows 95 GUI. No servers. No cloud brokers. Just raw, encrypted, peer to peer communication. Check out the interactive demo on the GitHub page!
Ships:
What did I make? I built ZeroNet, a completely decentralized, zero configuration Local Area Network messenger with a nostalgic Windows 95 Graphical Interface and a dark themed terminal interface. It automatically finds users on your WiFi and establishes direct, end to end encrypted connections. What was challenging? The hardest part was solving network race conditions without a central server. I had to design a deterministic tie breaking system using unique device IDs to prevent duplicate connections when two peers discover each other simultaneously. What am I proud of? I am most proud of the custom PyQt6 GUI. I spent hours customizing the stylesheets to perfectly recreate the classic Windows 95 and ICQ aesthetic with gray panels, sharp bevels, and pixel fonts. What should people know so they can test my project? ZeroNet requires zero configuration to use. Just run the app on two computers connected to the same WiFi network, and they will automatically discover each other and exchange cryptographic keys....
|
1793958608.307079
|
1794045008.307079
|
|
24570
|
ZeroG-KIT by @otzpt | Stardance
|
otzpt
|
1
|
22.0
|
167
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-05T09:56:16Z", "hours": 22.0, "multiplier": 7.67, "payout": 167, "blessing": "neutral", "text": "ZeroG-KIT is a Windows CLI toolkit that includes 20 tools divided into five categories: system cleanup, utilities, security, network, and text/data tools. It is built in Python and automatically gains admin access when launched, so no GUI is required. One challenge was maintaining consistency across the 20 tools in five separate modules. Every tool that interacts with files, the network, or system calls needed solid error handling. This meant using try/except blocks to prevent crashes with bad input. During the project, I also reorganized the code from a single utilities.py into a proper module structure. It took time, but it made the codebase much cleaner. I’m proud of the final scope. What began as a few basic tools has grown into a toolkit I actually use. It now includes a process killer, a firewall check, AES encryption, a LAN scanner, all in one place. To test it, clone the repo, run pip install -r requirements.txt, and then run python main.py. It only works on Windows and will prompt for admin access on launch. Check out the network scanner, the encryption tool, or the process killer; those are the most interesting features.", "repo": "https://github.com/otzpt/ZeroG-Kit-", "demo": "https://github.com/otzpt/ZeroG-Kit-/releases/tag/realese1"}]...
|
[{"post_id": 19351, "ts": "202 [{"post_id": 19351, "ts": "2026-06-30T17:02:32Z", "hours": 2.1925, "text": "Three more tools went in, plus a structural change that’s probably the bigger story this time. The regex tester is straightforward, take a pattern, take a text, run re.findall(), wrapped in a try/except to catch re.error for bad patterns instead of crashing. Nothing fancy but it’s the kind of utility that earns its keep. Lorem ipsum generator was a chance to use random.choices() properly, a fixed word bank, pick k words at random with replacement, join with spaces. Simple, but it’s the first tool that leans on random instead of secrets. Process killer is the one I’m happiest with. It pulls every running process via psutil.process_iter(), sorts by memory usage, and prints a clean top-30 table. A second function, kill_process(), takes a process name, loops through and terminates matches, with try/except for NoSuchProcess and AccessDenied so it doesn’t blow up on protected system processes. Eventually want a GUI version of this with a red kill button next to the list, but that’s a later project, not blocking this one. The bigger change: split the single utilities.py into proper modules. utilities.py now holds system/image/QR/password/unit-convert/process tools, security.py has hashing, password checking, encryption, vuln scanning, and firewall checks, network.py has the network tools, and text_tools.py has base64, JSON, case conversion, regex, and lorem ipsum. main.py got restructured into category submenus (System, Utilities, Security, Network, Text & Data) instead of one flat list. Toolkit is sitting at 20 tools now and the codebase is a lot easier to navigate. Only thing left before this ships: menu polish, colorama for color, cleaner separators, and a version number in the header."}, {"post_id": 16828, "ts": "2026-06-27T10:08:50Z", "hours": 9.4711, "text": "Three more tools implemented and the toolkit is now at 17. Base64 encode/decode was the simplest one. Python has it built in with the base64 module, so it was mostly about building a clean submenu and making sure the output was readable instead of raw bytes. Same pattern as the encryption tool, encode() on the way in and decode() on the way out. The JSON formatter took a bit more. It reads a file path from the user, opens it, parses the JSON, and prints it back with 4-space indentation. The important part was wrapping the whole thing in a try/except — if the file doesn’t exist or the JSON is malformed it gives a clear error message instead of crashing. Something I’ve been doing more naturally now without thinking about it. Text case converter was probably the most fun. UPPER and lower are trivial, Title Case is one method call, but camelCase and snake_case required actually thinking through the logic, split by spaces, transform each word, join with different separators. Doing snake_case first made camelCase easier to see. 19 hours in. Still have regex tester, lorem ipsum, process killer, and menu polish left before this is ready to ship."}, {"post_id": 15757, "ts": "2026-06-25T17:07:13Z", "hours": 2.0628, "text": "The network section kept growing faster than I expected. After the ping checker and IP viewer, I added a port checker. You provide a host and a port, and it tries to connect with a 3-second timeout. It tells you if the port is open or closed. It’s simple, but I actually use this. It’s much quicker than Googling “how to check if port X is open” every time. I had to wrap it in try/except because if the port is closed, the connection throws an exception and crashes everything. I learned that the hard way. Building the IP scanner was the most satisfying part. It grabs your local IP and removes the last number to get the network prefix. Then, it pings every address from 1 to 255. The first version printed the full ping output for every single address, resulting in 255 walls of text. I fixed this by switching from os.system to os.popen, which allowed me to capture the output and show only the IPs that actually replied. I ran it on my network and discovered 5 devices. One of them I didn’t even know was connected. Now, I have 15 tools total. The network section is done."}, {"post_id": 15276, "ts": "2026-06-24T20:17:53Z", "hours": 3.2436, "text": "The security section is done, network tools are in, and the program now handles admin privileges on its own.The security section is done, network tools are in, and the program now handles admin privileges on its own. For the network side I added two things. A ping checker that sends 4 packets to whatever host you type in, and an IP viewer that shows your local IP using Python’s socket module and your public IP by calling curl ifconfig.me. Both are things I actually use all the time and was tired of opening a separate terminal for. The firewall assistant checks if all three Windows profiles are active and whether port 3389 is exposed. That last one matters — leaving Remote Desktop open is one of the most common security mistakes on Windows machines. The self-elevation part was probably the most satisfying to figure out. Some tools need admin rights to work properly, and instead of making the user remember to right-click and run as admin, the script checks on startup and relaunches itself elevated if needed. My machine has auto-UAC so I don’t see the popup, but it works. 14 tools now. Ready to submit."}, {"post_id": 15161, "ts": "2026-06-24T17:04:18Z", "hours": 3.8214, "text": "The toolkit kept growing faster than I expected. After the first batch of tools, I started getting into stuff I hadn’t touched before — cryptography, QR codes, and digging into Windows internals. First I added the QR code generator. Honestly easier than I thought — create a QRCode object, feed it data, save the image. Done in a few lines. Then I moved into the security section, which ended up being the most interesting part of this devlog. The password strength checker evaluates five criteria and returns a rating. The vulnerability scanner reads a .py file and flags dangerous patterns like eval(), exec(), and pickle.loads() — each one is a separate if so it catches everything, not just the first issue it finds. The encryption tool was the trickiest one. I used Python’s cryptography library with AES via Fernet. The user’s key gets hashed with SHA-256 to get a proper 32-byte key, then Fernet handles the rest. The annoying part was the output — Python was printing b’…’ around the encrypted string which broke the decryption input. Fixed it with .decode(). The firewall assistant uses netsh advfirewall to check if the firewall is active on all three Windows profiles and whether Remote Desktop port 3389 is open. Something I’ll actually use. 13 tools now. Security section is done."}, {"post_id": 14476, "ts": "2026-06-23T16:38:03Z", "hours": 1.1403, "text": "ZeroG-KIT started as a simple idea — instead of opening a bunch of different tools or googling converters every time, why not have everything in one place from the terminal? The name comes from zero gravity, no resistance, no friction, things just flow. I built the main menu first, a while loop with a bordered ASCII interface to keep it clean. From there I added the first batch of features. A temp file cleaner that wipes %TEMP%, Windows\\Temp, and Prefetch in one go, a clipboard viewer, and a batch image converter using Pillow that handles format issues like RGBA to JPG automatically. For the utilities side I added a password generator using Python’s secrets module for actual cryptographic randomness, a SHA-256 text hasher, and a full unit converter covering temperature, weight, length, and data size. Those live in a separate utilities.py to keep the main file readable. 6 out of 6 planned tools are working. Next up is system info and some polish."}]...
|
Title: ZeroG-KIT by @otzpt | Stardance
Devlogs:
Z Title: ZeroG-KIT by @otzpt | Stardance
Devlogs:
ZeroG-KIT started as a simple idea — instead of opening a bunch of different tools or googling converters every time, why not have everything in one place from the terminal? The name comes from zero gravity, no resistance, no friction, things just flow. I built the main menu first, a while loop with a bordered ASCII interface to keep it clean. From there I added the first batch of features. A temp file cleaner that wipes %TEMP%, Windows\Temp, and Prefetch in one go, a clipboard viewer, and a batch image converter using Pillow that handles format issues like RGBA to JPG automatically. For the utilities side I added a password generator using Python’s secrets module for actual cryptographic randomness, a SHA-256 text hasher, and a full unit converter covering temperature, weight, length, and data size. Those live in a separate utilities.py to keep the main file readable. 6 out of 6 planned tools are working. Next up is system info and some polish.
The toolkit kept growing faster than I expected. After the first batch of tools, I started getting into stuff I hadn’t touched before — cryptography, QR codes, and digging into Windows internals. First I added the QR code generator. Honestly easier than I thought — create a QRCode object, feed it data, save the image. Done in a few lines. Then I moved into the security section, which ended up being the most interesting part of this devlog. The password strength checker evaluates five criteria and returns a rating. The vulnerability scanner reads a .py file and flags dangerous patterns like eval(), exec(), and pickle.loads() — each one is a separate if so it catches everything, not just the first issue it finds. The encryption tool was the trickiest one. I used Python’s cryptography library with AES via Fernet. The user’s key gets hashed with SHA-256 to get a proper 32-byte key, then Fernet handles the rest. The annoying part was the output — Python was printing b’…’ around the encrypted string which broke the decryption input. Fixed it with .decode(). The firewall assistant uses netsh advfirewall to check if the firewall is active on all three Windows profiles and whether Remote Desktop port 3389 is open. Something I’ll actually use. 13 tools now. Security section is done.
The security section is done, network tools are in, and the program now handles admin privileges on its own.The security section is done, network tools are in, and the program now handles admin privileges on its own. For the network side I added two things. A ping checker that sends 4 packets to whatever host you type in, and an IP viewer that shows your local IP using Python’s socket module and your public IP by calling curl ifconfig.me. Both are things I actually use all the time and was tired of opening a separate terminal for. The firewall assistant checks if all three Windows profiles are active and whether port 3389 is exposed. That last one matters — leaving Remote Desktop open is one of the most common security mistakes on Windows machines. The self-elevation part was probably the most satisfying to figure out. Some tools need admin rights to work properly, and instead of making the user remember to right-click and run as admin, the script checks on startup and relaunches itself elevated if needed. My machine has auto-UAC so I don’t see the popup, but it works. 14 tools now. Ready to submit.
The network section kept growing faster than I expected. After the ping checker and IP viewer, I added a port checker. You provide a host and a port, and it tries to connect with a 3-second timeout. It tells you if the port is open or closed. It’s simple, but I actually use this. It’s much quicker than Googling “how to check if port X is open” every time. I had to wrap it in try/except because if the port is closed, the connection throws an exception and crashes everything. I learned that the hard way. Building the IP scanner was the most satisfying part. It grabs your local IP and removes the last number to get the network prefix. Then, it pings every address from 1 to 255. The first version printed the full ping output for every single address, resulting in 255 walls of text. I fixed this by switching from os.system to os.popen, which allowed me to capture the output and show only the IPs that actually replied. I ran it on my network and discovered 5 devices. One of them I didn’t even know was connected. Now, I have 15 tools total. The network section is done.
Three more tools implemented and the toolkit is now at 17. Base64 encode/decode was the simplest one. Python has it built in with the base64 module, so it was mostly about building a clean submenu and making sure the output was readable instead of raw bytes. Same pattern as the encryption tool, encode() on the way in and decode() on the way out. The JSON formatter took a bit more. It reads a file path from the user, opens it, parses the JSON, and prints it back with 4-space indentation. The important part was wrapping the whole thing in a try/except — if the file doesn’t exist or the JSON is malformed it gives a clear error message instead of crashing. Something I’ve been doing more naturally now without thinking about it. Text case converter was probably the most fun. UPPER and lower are trivial, Title Case is one method call, but camelCase and snake_case required actually thinking through the logic, split by spaces, transform each word, join with different separators. Doing snake_case first made camelCase easier to see. 19 hours in. Still have regex tester, lorem ipsum, process killer, and menu polish left before this is ready to ship.
Three more tools went in, plus a structural change that’s probably the bigger story this time. The regex tester is straightforward, take a pattern, take a text, run re.findall(), wrapped in a try/except to catch re.error for bad patterns instead of crashing. Nothing fancy but it’s the kind of utility that earns its keep. Lorem ipsum generator was a chance to use random.choices() properly, a fixed word bank, pick k words at random with replacement, join with spaces. Simple, but it’s the first tool that leans on random instead of secrets. Process killer is the one I’m happiest with. It pulls every running process via psutil.process_iter(), sorts by memory usage, and prints a clean top-30 table. A second function, kill_process(), takes a process name, loops through and terminates matches, with try/except for NoSuchProcess and AccessDenied so it doesn’t blow up on protected system processes. Eventually want a GUI version of this with a red kill button next to the list, but that’s a later project, not blocking this one. The bigger change: split the single utilities.py into proper modules. utilities.py now holds system/image/QR/password/unit-convert/process tools, security.py has hashing, password checking, encryption, vuln scanning, and firewall checks, network.py has the network tools, and text_tools.py has base64, JSON, case conversion, regex, and lorem ipsum. main.py got restructured into category submenus (System, Utilities, Security, Network, Text & Data) instead of one flat list. Toolkit is sitting at 20 tools now and the codebase is a lot easier to navigate. Only thing left before this ships: menu polish, colorama for color, cleaner separators, and a version number in the header.
Ships:
ZeroG-KIT is a Windows CLI toolkit that includes 20 tools divided into five categories: system cleanup, utilities, security, network, and text/data tools. It is built in Python and automatically gains admin access when launched, so no GUI is required. One challenge was maintaining consistency across the 20 tools in five separate modules. Every tool that interacts with files, the network, or system calls needed solid error handling. This meant using try/except blocks to prevent crashes with bad input. During the project, I also reorganized the code from a single utilities.py into a proper module structure. It took time, but it made the codebase much cleaner. I’m proud of the final scope. What began as a few basic tools has grown into a toolkit I actually use. It now includes a process killer, a firewall check, AES encryption, a LAN scanner, all in one place. To test it, clone the repo, run pip install -r requirements.txt, and then run python main.py. It only works on Windows and will prompt for admin access on launch. Check out the network scanner, the encryption tool, or the process killer; those are the most interesting features....
|
1793868648.657948
|
1793955048.657948
|
|
48963
|
ZeroFall by @anand91 | Stardance
|
anand91
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ZeroFall by @anand91 | Stardance
|
1793994689.4854496
|
1794599489.4854496
|
|
32434
|
Zero.info.bo by @franco | Stardance
|
franco
|
1
|
13.0
|
26
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-15T01:09:59Z", "hours": 13.0, "multiplier": 2.12, "payout": 26, "blessing": "neutral", "text": "Zero If you are reading this without any prior context, you might be asking: What is this project? This project involves turning my portfolio into a full-blown “personal company” platform by adding OAuth and other features. What did I do? Ive created my own OAuth system with full blown image uploading and etc. It has all of this features - Hackclub Auth - 2FA - Password managment - Profile picture Managment And other tons of features It also has like a ton of security like a ton like encryption sha un guessable random stuff etc etc.. How to use it for yourself First clone the github repo using: git clone https://github.com/Franco-Senes/Zero.git Then cd to the carpet cd Zero After that cd to the server cd Server Then download the dependencies npm install Then create a .env using this template PORT=3000 JWT_SECRET= ALLOWED_ORIGINS=http://localhost:3000,http://127.0.0.1:3000 HACKCLUB_CLIENT_ID= HACKCLUB_CLIENT_SECRET= HACKCLUB_REDIRECT_URI=http://localhost:3000/api/auth/hackclub/callback After start the server finally npm run dev or npm start If you see this: > [email protected] dev > node server.js ◇ injected env (6) from .env // tip: ⌘ override existing { override: true } Zero.info.bo - Server Running on http://localhost:3000 Franco was here (; ------- Debug -------- ignored colum exists ignored colum exists ignored colum exists Then you are all buckled up (; Thanks for reading (;", "repo": "https://github.com/Franco-Senes/Zero", "demo": "https://zero.info.bo"}]...
|
[{"post_id": 28649, "ts": "202 [{"post_id": 28649, "ts": "2026-07-15T01:02:06Z", "hours": 5.5972, "text": "Finished the Frontend If you are reading this without any prior context, you might be asking: What is this project? This project involves turning my portfolio into a full-blown “personal company” platform by adding OAuth and other features. What did I do? First, I organized the project into the following directory structure: |── app/ # Main Frontend | ├── js/ | ├── css/ | ├── index.html | └── icon.png |── auth/ #Frontend for auth | ├── css/ | ├── js/ | ├── account.html | └── oauth.html |── server/ # Main Backend ├── uploads/ ├── database.js ├── server.js ├── package.json ├── zero.db After that, I started creating /app/ and decided that for styling I would use Tailwind CSS because it would be easier and more compact. It will impact compatibility a little bit, but not by that much. After doing that, I made the account settings and other core pages. For what I am doing, I am really proud of what I have accomplished right now. After writing this, I will make my README.md , publish it to GitHub and zero.info.bo , and ship it! Thanks for reading (; Here are some pictures of what I’ve made:"}, {"post_id": 25319, "ts": "2026-07-09T15:17:50Z", "hours": 2.5444, "text": "Finished the back end First you may be reading this without knowing the context so you may ask: What is this project This project involves turning my portfolio into a full own “personal company” by adding oauth and other features What did i do I think it is in the title that i finished the backend but if you keep asking i added all of this to my backend Register (POST /api/auth/register) Login (POST /api/auth/login) 2FA Login (POST /api/auth/login-2fa) Logout (POST /api/auth/logout) Get current user profile (GET /api/auth/me) Change password with 2FA check (POST /api/user/change-password) Upload avatar with webp conversion and sharp resizing (POST /api/user/avatar) Create oauth app (POST /api/oauth/apps) Get my oauth apps (GET /api/oauth/apps) Get authorized oauth apps (GET /api/oauth/authorized-apps) Revoke oauth app authorization (DELETE /api/oauth/authorized-apps/:client_id) 2FA setup and qr generator (POST /api/user/2fa/setup) 2FA verify and activate (POST /api/user/2fa/verify) 2FA disable (POST /api/user/2fa/disable) Toggle 2FA required on login (POST /api/user/2fa/toggle-login) OAuth authorize endpoint (GET /oauth/authorize) OAuth consent endpoint (POST /oauth/consent) OAuth token exchange endpoint (POST /oauth/token) OAuth userinfo endpoint (GET /api/userinfo) So yeah thats it also forgot to add hackclub as a login method ill do that later So thanks for reading (;"}, {"post_id": 24829, "ts": "2026-07-08T17:18:19Z", "hours": 0.555, "text": "decided to add 2fa for now everything is going good planing to add 2fa as a login method and hackclub also idk what image to put here so ill put the first image that appears on my pinterest"}, {"post_id": 24797, "ts": "2026-07-08T16:17:20Z", "hours": 3.9539, "text": "Started creating the backend with all the necesary tools i need"}]...
|
Title: Zero.info.bo by @franco | Stardance
Devlog Title: Zero.info.bo by @franco | Stardance
Devlogs:
Started creating the backend with all the necesary tools i need
decided to add 2fa for now everything is going good planing to add 2fa as a login method and hackclub also idk what image to put here so ill put the first image that appears on my pinterest
Finished the back end First you may be reading this without knowing the context so you may ask: What is this project This project involves turning my portfolio into a full own “personal company” by adding oauth and other features What did i do I think it is in the title that i finished the backend but if you keep asking i added all of this to my backend Register (POST /api/auth/register) Login (POST /api/auth/login) 2FA Login (POST /api/auth/login-2fa) Logout (POST /api/auth/logout) Get current user profile (GET /api/auth/me) Change password with 2FA check (POST /api/user/change-password) Upload avatar with webp conversion and sharp resizing (POST /api/user/avatar) Create oauth app (POST /api/oauth/apps) Get my oauth apps (GET /api/oauth/apps) Get authorized oauth apps (GET /api/oauth/authorized-apps) Revoke oauth app authorization (DELETE /api/oauth/authorized-apps/:client_id) 2FA setup and qr generator (POST /api/user/2fa/setup) 2FA verify and activate (POST /api/user/2fa/verify) 2FA disable (POST /api/user/2fa/disable) Toggle 2FA required on login (POST /api/user/2fa/toggle-login) OAuth authorize endpoint (GET /oauth/authorize) OAuth consent endpoint (POST /oauth/consent) OAuth token exchange endpoint (POST /oauth/token) OAuth userinfo endpoint (GET /api/userinfo) So yeah thats it also forgot to add hackclub as a login method ill do that later So thanks for reading (;
Finished the Frontend If you are reading this without any prior context, you might be asking: What is this project? This project involves turning my portfolio into a full-blown “personal company” platform by adding OAuth and other features. What did I do? First, I organized the project into the following directory structure: |── app/ # Main Frontend | ├── js/ | ├── css/ | ├── index.html | └── icon.png |── auth/ #Frontend for auth | ├── css/ | ├── js/ | ├── account.html | └── oauth.html |── server/ # Main Backend ├── uploads/ ├── database.js ├── server.js ├── package.json ├── zero.db After that, I started creating /app/ and decided that for styling I would use Tailwind CSS because it would be easier and more compact. It will impact compatibility a little bit, but not by that much. After doing that, I made the account settings and other core pages. For what I am doing, I am really proud of what I have accomplished right now. After writing this, I will make my README.md , publish it to GitHub and zero.info.bo , and ship it! Thanks for reading (; Here are some pictures of what I’ve made:
Ships:
Zero If you are reading this without any prior context, you might be asking: What is this project? This project involves turning my portfolio into a full-blown “personal company” platform by adding OAuth and other features. What did I do? Ive created my own OAuth system with full blown image uploading and etc. It has all of this features - Hackclub Auth - 2FA - Password managment - Profile picture Managment And other tons of features It also has like a ton of security like a ton like encryption sha un guessable random stuff etc etc.. How to use it for yourself First clone the github repo using: git clone https://github.com/Franco-Senes/Zero.git Then cd to the carpet cd Zero After that cd to the server cd Server Then download the dependencies npm install Then create a .env using this template PORT=3000 JWT_SECRET= ALLOWED_ORIGINS=http://localhost:3000,http://127.0.0.1:3000 HACKCLUB_CLIENT_ID= HACKCLUB_CLIENT_SECRET= HACKCLUB_REDIRECT_URI=http://localhost:3000/api/auth/hackclub/callback After start the server finally npm run dev or npm start If you see this: > [email protected] dev > node server.js ◇ injected env (6) from .env // tip: ⌘ override existing { override: true } Zero.info.bo - Server Running on http://localhost:3000 Franco was here (; ------- Debug -------- ignored colum exists ignored colum exists ignored colum exists Then you are all buckled up (; Thanks for reading (;...
|
1793998324.8952732
|
1794084724.8952732
|
|
33959
|
Zero-advance by @ThumbDash | Stardance
|
ThumbDash
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Zero-advance by @ThumbDash | Stardance
|
1793793183.5884266
|
1794657183.5884266
|
|
360
|
Zero-Profit Auth frontend by @Joko26 | Stardance
|
Joko26
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Zero-Profit Auth frontend by @Joko26 | Star Title: Zero-Profit Auth frontend by @Joko26 | Stardance...
|
1794048590.3967083
|
1794653390.3967083
|
|
23641
|
Zero-Deck by @Tan-May | Stardance
|
Tan-May
|
0
|
27.67
|
0
|
[]
|
[{"post_id": 54977, "ts": "202 [{"post_id": 54977, "ts": "2026-08-26T12:29:24Z", "hours": 6.5825, "text": "made the changes in the pc of the keyboard again like i changed the board from the xiao’s to rpi pico 2 and we will make it do more tasks now so now the deck has two brains , the pico will act as the low powered brain for the deck and im also planning to drive the e-ink display using it and keep the e-ink on always on mode!! also adding some screenshots too!! i need some suggestions on the features that i should add to this keyboard"}, {"post_id": 51668, "ts": "2026-08-21T14:02:03Z", "hours": 8.8692, "text": "Just finished with the keyboard. Few features are still remaining, but 9 hrs were already logged, so here’s the devlog.After completing the basic 3D case, I moved to designing the PCB. I had some experience of designing the PCB, so it was not that big problem, but still it took crazy long. I did lots of mistakes while doing it, and also I figured out later about the sheets option in KiCad. Man!! That feature’s so amazing. I organized the keyboard properly and also made the pads for connecting the joystick (it will act as the mouse) and also added two buttons (right and left), same as the mouse. Hope it will work properly. Also, I’m planning to add some more pads so that we can, in future, also add more components like OLED screen, etc. to the XIAO in keyboard. While everything was going on fine, at last, just after finishing the keyboard, when I exported the STEP file and imported it in the main project, it’s looking like that PCB is going out of the screen’s place, so now I have to figure this out 😭Happy to receive suggestions!"}, {"post_id": 47973, "ts": "2026-08-16T07:49:59Z", "hours": 4.1358, "text": "Done with the casing and every fitting of the parts , added the real components so that it will be proper in the fitting , though it need some finishing but for now im moving with the pcb , i already started making the 35 keys querty keyboard with the ps5 joystick as the mouse and i guess i will also add two buttons (each at one grip one at left and another at right ) , i already added the joystick in the fusion for the reference , suggest me if you have any suggestions for improving fixing etc"}, {"post_id": 47387, "ts": "2026-08-15T09:30:52Z", "hours": 4.4903, "text": "Helllewo new devlog here , so First of all Happpy Independence day to all my Indian friends watching , so today i worked on the enclosure part of the display cause this was causing lots of trouble , i had to do lots of modifications in the base case of the zero-deck which took my lots of times and efforts too but i managed to fix everything and now im moving ahead making this remains part and also i guess i will make the hinges too (Hardest part of the project btw )"}, {"post_id": 46808, "ts": "2026-08-14T09:57:14Z", "hours": 2.3292, "text": "made the basic enclosure for the Zero-Deck , here it was a very easy task as i already had the sketches drawn in the previous devlog so i just had to copy and paste the exact numbers here in the fusion but as mentioned earlier , i made few changes in the measurements as after calculating the keyboard size etc it was not fitting so i made it bigger and now I’m open for the suggestions in this , give any suggestion and ill think and add in it instantly if its good , also the next part I’m going with is the making the hinges , I’m thinking of using the MacBook’s hinges cause I’ve heard that those are very durable also for anyone who wants to know what keys I’m using here in this build , I’m adding the screenshot below of it too"}, {"post_id": 46733, "ts": "2026-08-14T06:18:24Z", "hours": 1.2619, "text": "Hello Hello Hello !! okay so after making my first hardware project on the Hackclub itself (Hackpad) and getting it approved it on first attempt now im going towards a big :) Welcome to my brand new project Zero-Deck (Yesses its a cyber deck ) im building custom pcb , matrix keyboard , bms , custom usb dongle etc etc you’ll get the context from the images added below , it took lots of time to sketch this as its the real measurements im going to work on so please hit a like comment if the suggestions are needed !!!!!!!!!!!!!!!! till then bye byeeeeee"}]...
|
Title: Zero-Deck by @Tan-May | Stardance
Devlogs: Title: Zero-Deck by @Tan-May | Stardance
Devlogs:
Hello Hello Hello !! okay so after making my first hardware project on the Hackclub itself (Hackpad) and getting it approved it on first attempt now im going towards a big :) Welcome to my brand new project Zero-Deck (Yesses its a cyber deck ) im building custom pcb , matrix keyboard , bms , custom usb dongle etc etc you’ll get the context from the images added below , it took lots of time to sketch this as its the real measurements im going to work on so please hit a like comment if the suggestions are needed !!!!!!!!!!!!!!!! till then bye byeeeeee
made the basic enclosure for the Zero-Deck , here it was a very easy task as i already had the sketches drawn in the previous devlog so i just had to copy and paste the exact numbers here in the fusion but as mentioned earlier , i made few changes in the measurements as after calculating the keyboard size etc it was not fitting so i made it bigger and now I’m open for the suggestions in this , give any suggestion and ill think and add in it instantly if its good , also the next part I’m going with is the making the hinges , I’m thinking of using the MacBook’s hinges cause I’ve heard that those are very durable also for anyone who wants to know what keys I’m using here in this build , I’m adding the screenshot below of it too
Helllewo new devlog here , so First of all Happpy Independence day to all my Indian friends watching , so today i worked on the enclosure part of the display cause this was causing lots of trouble , i had to do lots of modifications in the base case of the zero-deck which took my lots of times and efforts too but i managed to fix everything and now im moving ahead making this remains part and also i guess i will make the hinges too (Hardest part of the project btw )
Done with the casing and every fitting of the parts , added the real components so that it will be proper in the fitting , though it need some finishing but for now im moving with the pcb , i already started making the 35 keys querty keyboard with the ps5 joystick as the mouse and i guess i will also add two buttons (each at one grip one at left and another at right ) , i already added the joystick in the fusion for the reference , suggest me if you have any suggestions for improving fixing etc
Just finished with the keyboard. Few features are still remaining, but 9 hrs were already logged, so here’s the devlog.After completing the basic 3D case, I moved to designing the PCB. I had some experience of designing the PCB, so it was not that big problem, but still it took crazy long. I did lots of mistakes while doing it, and also I figured out later about the sheets option in KiCad. Man!! That feature’s so amazing. I organized the keyboard properly and also made the pads for connecting the joystick (it will act as the mouse) and also added two buttons (right and left), same as the mouse. Hope it will work properly. Also, I’m planning to add some more pads so that we can, in future, also add more components like OLED screen, etc. to the XIAO in keyboard. While everything was going on fine, at last, just after finishing the keyboard, when I exported the STEP file and imported it in the main project, it’s looking like that PCB is going out of the screen’s place, so now I have to figure this out 😭Happy to receive suggestions!
made the changes in the pc of the keyboard again like i changed the board from the xiao’s to rpi pico 2 and we will make it do more tasks now so now the deck has two brains , the pico will act as the low powered brain for the deck and im also planning to drive the e-ink display using it and keep the e-ink on always on mode!! also adding some screenshots too!! i need some suggestions on the features that i should add to this keyboard...
|
1793893856.6122704
|
1794757856.6122704
|
|
2711
|
Zero-Assist by @tanmay | Stardance
|
tanmay
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Zero-Assist by @tanmay | Stardance
|
1793940498.5975423
|
1794804498.5975423
|
|
4644
|
Zero-Assist by @Tan-May | Stardance
|
Tan-May
|
0
|
229.35
|
0
|
[]
|
[{"post_id": 40727, "ts": "202 [{"post_id": 40727, "ts": "2026-08-04T13:20:13Z", "hours": 13.7692, "text": "Check this out !! so yesterday i finished with the MCP implementation of the app , i implemented 4 transport method (STDIO,,HTTP,SSE and the LOCALHOST_STDIO) so when i was testing out i found out that only one of them is working properly , (the http one ) to which i connected multiple apps , mcp’s etc everything was working fine but when i tested the other transport method , not even a single one was working because it all needed the desktop to run with the specific packages so unfortunately i was not able to use it and i also find out about the nasa mcp where they daily upload the images mars rover images etc so i tried to test it but the problem was that the mcp was not http instead it was the STDIO so i was sad cause i had to fix first the mcp issue then test it but when i was in school in break i was getting board and opened the app and i had an idea like cant we just convert the normal stdio into the http mcp using the termux ? after asking to claude it said definitely we can do this so then i setuped the env(i will add a screenshot below ) and made a proxy server which converts the normal stdio mcp to the http steamtable and i was then able to access it locally using my app (i will add the image of it too) and i managed to connect to the mcp and fetch the images , now everything is working completely fine just the remaining part is the remaining transport which i will fix it some how !! also i will add some images i fetched below"}, {"post_id": 39007, "ts": "2026-08-01T17:30:37Z", "hours": 3.4689, "text": "Update !!! new devlog here … so now after doing some more research on the mcps and the implementation plans etc etc now im finally going all on it , ive added a ui component of the MCP in the Connection/Plugin/MCP , where i added few premade mcp options like (GitHub , brave search , external postgre sql etc ..) also there i added the option of the add custom server in which use can add custom server where currently the transport options are (STDIO,HTTP,SSE,LOCALHOST_STDIO (where you can add local mcp servers using the apps like termux etc ) so now that the ui is completed now i will move on to the connection part of the ui to the backend rust engine via uniffi )"}, {"post_id": 38224, "ts": "2026-07-31T14:56:23Z", "hours": 2.8122, "text": "Devlog time :> so now I’m continuing with the implementation of the MCP in the app like i previously talked now when i did some tinkering with the rust code using the ai , i managed to get all the connected MCP tools into the config file of the ai the config is getting updated now but the problem is that the config is constantly keeps changing don’t know what’s happening i guess the the problem is in the toml config generator which is glitching out , so now im trying fixing it from lots of time now , i guess i might have to use the antigravity to fix this but i exhausted my weekly limit cause I’m on a free tier 😭😭.. ill catch up with yall later till then bye bye 🙆.."}, {"post_id": 38050, "ts": "2026-07-31T07:21:16Z", "hours": 3.8936, "text": "Hello Hello Hello new devlog here , so now i started with the implementation of the MCP believe me guys once the app gets the MCP the app will go to another level , like it will then support literally any app (any app) it can perform actions like the mcp does but in simpler way also when i started with implementation i hit the problem again the code is there in the zeroclaw engine but again the problem is that its meant to run on the desktop so now we again have to do some changes in code and make the mcp run natively on the phone , i also found out some resources to do it like ( https://github.com/modelcontextprotocol/kotlin-sdk ) which is good so now the idea is something similar like shown in the screenshot below taken from the chat gpt …."}, {"post_id": 37593, "ts": "2026-07-30T13:01:48Z", "hours": 7.1106, "text": "Devlog here , so now i added the new cool animation (thinking orb ) this animation was totally inspired from the ( https://orbs.jakubantalik.com/ ) but the problem was that the orb was written in the typescript which wont work in our app cause our app is written in the kotlin so what i did was i downloaded the zip file from the repo pasted it to the claude and told him to convert it into kotlin for me and surprisingly the results was amazing , i will share the video recording too , and the other part i worked on was i added a few voices for my apps from the hugging face so now the user can use the custom voices too and also if he wants to use some of the default voices , the option is there do download in the app, some voices ( https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_US/lessac/medium/en_US-lessac-medium.onnx , https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_US/lessac/medium/en_US-lessac-medium.onnx , https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_GB/alan/medium/en_GB-alan-medium.onnx ) for someone whose interested …"}, {"post_id": 34542, "ts": "2026-07-25T10:46:59Z", "hours": 5.4758, "text": "Devlog: Google Workspace Integration This week I worked on integrating Google Workspace into Zero-Assist , allowing the AI to securely access services like Gmail, Google Drive, Google Docs, and Google Sheets after the user grants permission. The ZeroClaw engine already supports Google Workspace CLI (GWS) , but it was originally built for desktop Linux and expects a desktop environment with GWS already installed. Since Zero-Assist runs inside an Alpine Linux sandbox on Android using PRoot , that approach doesn’t work directly. Instead of rewriting the integration, I kept the existing architecture and adapted it for Android. What I Implemented I modified the sandbox installation process so that GWS is installed automatically whenever the user installs the standard sandbox packages. This means users don’t need to manually install or configure the CLI. Inside the app, I added a new Google Workspace plugin under: Connections → Plugins → Installed → Google Workspace When the user signs in, the Android app completes the OAuth flow and generates the required Google Workspace configuration files. To bridge Android and the Linux sandbox, I use the existing Android ↔ PRoot bridge . The plan is: User Login ↓ Android creates GWS credentials ↓ Credentials copied into PRoot sandbox ↓ Sandbox GWS CLI uses the same credentials ↓ AI can access approved Google services This keeps authentication native while allowing the Linux CLI to work without requiring the user to touch the terminal. Google Cloud Setup I also created a dedicated Google Cloud Console project for Zero-Assist. The project uses a Web Application OAuth client , which is required by the Google Workspace CLI authentication flow. I enabled the necessary APIs, including: Gmail API Google Drive API Google Docs API Google Sheets API More APIs can be enabled as additional integrations are added. Current Problem The authentication flow itself works correctly, and users can successfully sign in. The issue is that the generated credential/configuration files are not being copied correctly into the Linux sandbox . Because of this, the sandboxed GWS CLI cannot find the required authentication files, causing every Google Workspace command to fail. The current challenge isn’t OAuth—it’s reliably synchronizing credentials between Android and the PRoot environment. Once this bridge is working, users will simply sign in once, choose which Google services they want to grant access to, and Zero-Assist will be able to securely interact with those services without any manual setup. note:This devlog is written with hands and then passed to the chatgpt to format it with the .md because im very lazy to play with those colons and #’s"}, {"post_id": 33937, "ts": "2026-07-24T08:09:07Z", "hours": 6.6875, "text": "Device Control Development Update Yesterday I worked on expanding the Device Control system in my AI assistant. The idea behind this feature is to allow the AI to perform real actions on an Android device using the Accessibility Service . When the user gives a command such as “Subscribe to MrBeast on YouTube” , the main AI analyzes the request and delegates it to the Device Control tool. Current Workflow Launch the required application using: PackageManager.getLaunchIntentForPackage() startActivity() Capture a compressed screenshot of the current screen. Analyze the screenshot to identify UI elements and their screen coordinates. Navigate the interface and perform actions through the Android Accessibility APIs. Current Features Open applications Tap at (x, y) Swipe gestures Type text These core primitives allow the AI to interact with almost any Android application through UI automation. Future Improvements My main goals are to improve both speed and accuracy . Instead of navigating through multiple screens for simple system operations, I plan to add native high-level commands directly into the Device Control tool, such as: flashlight_toggle wifi_toggle bluetooth_toggle mobile_data_toggle volume_set brightness_set take_screenshot lock_screen open_notifications open_quick_settings go_home go_back open_recents These commands will allow the AI to execute common Android actions instantly without relying on visual navigation. For more complex tasks—such as interacting with third-party applications—the tool will continue using the screenshot + coordinate-based navigation pipeline. Long-Term Vision The goal is to build a hybrid Device Control system: Native commands for common Android operations (fast, reliable, and efficient). Vision-guided UI automation for complex interactions within any application. This architecture will significantly reduce execution time, improve reliability, and make the assistant capable of handling virtually any task on an Android device."}, {"post_id": 33134, "ts": "2026-07-22T19:18:54Z", "hours": 15.1933, "text": "So i basically went through the whole device control system and hardened it. the planner was splitting compound goals like “open instagram and message rohit” into separate calls which broke everything. also fixed it so the loop doesn’t just bail on the first response - it actually executes the action first. scroll was crashing if the planner didn’t send a direction so now it defaults down. and exceptions in the callback handler were just silently killing the process so now everything is caught and logged properly. added loop detection so it doesn’t get stuck repeating the same thing, post-action screen verification, and 44 tests to cover it all. very happy that it worked , it took lots of time but eventually i think the results are very very good though this thing not works great on the local ai’s but with the cheap api like openrouter/free , this thing can give pretty good results"}, {"post_id": 32219, "ts": "2026-07-21T07:52:35Z", "hours": 20.9892, "text": "okay so after spending lots of time on this issue , im finally able to make this work again , the problem was that (bin/sh, ust/bin/env) never extracted because of one code issue where i accidently mentioned them as the read only memory in the apps storage so the distro was installing also getting extracted but becacuse of the read only type of file , the app was not able to perform any actions on it , so now after taking the help from the open code now the sandbox is fully functional and working on every devices , also ive added some default packages which will get installed during the setup of the sandbox such as (wget, git , python3, jq, py3-pip, nodejs ,lftp and the openssh-client) just using the single command (apk add –no-cache bash curl wget git jq python3 py3-pip nodejs openssh-client lftp rsync)"}, {"post_id": 30521, "ts": "2026-07-18T05:11:12Z", "hours": 13.5486, "text": "Hello guys, devlog here!I finally got the Linux sandbox in Zero-Assist working end-to-end! The sandbox runs Alpine Linux through PRoot directly on Android without requiring root.Getting it working was harder than expected, though. I ran into several Android-specific issues.Fixing the SandboxThe first problem was Alpine’s heavy use of BusyBox hardlinks. My TAR extractor used File.copyTo(), which didn’t preserve executable permissions, causing errors like:proot error: execve(“/bin/sh”): Permission denied I fixed this by preserving executable bits:linkTarget.copyTo(outFile, overwrite = true) if (linkTarget.canExecute()) { outFile.setExecutable(true, false) } Some hardlinks were also extracted before BusyBox itself, so I added a second repair pass after extraction to restore critical commands like /bin/sh, /bin/ls, and /bin/cat.Symlinks were another problem because Android can block their creation. I added a fallback that copies the target when creating the actual symlink fails:try { Files.createSymbolicLink(outFile.toPath(), Paths.get(linkName)) } catch (e: Exception) { fallback.copyTo(outFile, overwrite = true) } I also had problems directly executing PRoot because some Android app directories can be noexec. The solution was to launch PRoot through Android’s system linker:val args = arrayOf( “/system/bin/linker64”, prootPath, “–rootfs=$rootfsPath”, “/bin/sh”, “-c”, command ) I also added corrupted download detection and automatic Alpine mirror fallback, making the rootfs installation much more reliable.Giving the AI Linux ToolsAfter getting the sandbox stable, I added two AI tools:sandbox_execute — Executes commands inside Alpine and supports persistent shell state, working directories, environment variables, timeouts, and background processes.sandbox_manage_process — Lets the AI list, monitor, read logs from, and kill background processes.For example, the AI can execute:{ “command”: “python3 –version && uname -a”, “working_dir”: “/root” } Or start a background server:{ “command”: “python3 -m http.server 8000”, “background”: true } The execution pipeline now looks like:AI Agent ↓ Rust Tool Layer ↓ Authenticated Local HTTP Bridge ↓ Kotlin Sandbox Manager ↓ PRoot ↓ Alpine Linux The Rust runtime communicates with the Kotlin sandbox through a localhost bridge on 127.0.0.1:49481, protected by a randomly generated per-process bearer token.And now the sandbox is fully functional end-to-end!The AI can execute real Linux commands, install packages, maintain persistent shell sessions, run scripts, start background processes, inspect their logs, and manage them — all inside Alpine Linux running directly on Android without root.This was one of the hardest parts of Zero-Assist so far, but now the AI finally has its own real Linux environment to work with."}, {"post_id": 29333, "ts": "2026-07-16T06:39:51Z", "hours": 11.0894, "text": "Giving Zero-Assist Its Own Linux Sandbox A lot of features I want in Zero-Assist need actual Linux tools: shell commands, Python, Git, Node.js, CLI tools, etc. I didn’t want this to require root, so I built a local Alpine Linux sandbox using PRoot that runs entirely on-device. The architecture is basically: AI daemon → sandbox tool → HTTP bridge → Kotlin sandbox manager → PRoot → Alpine Getting PRoot running One annoying problem was Android’s noexec restrictions. PRoot is stored inside the app’s data/native library directory and can’t always be executed normally. The solution was launching it through Android’s dynamic linker: private fun buildProcessArgs ( command : String , workingDir : String ): Array < String > { val args = arrayOf ( prootPath , \"--rootfs=$rootfsPath\" , \"--bind=/dev\" , \"--bind=/proc\" , \"--bind=/sys\" , \"--bind=$homePath:/root\" , \"--bind=$tmpPath:/tmp\" , \"-0\" , \"-w\" , workingDir , \"/bin/sh\" , \"-c\" , command ) return if ( ANDROID_LINKER != null ) arrayOf ( ANDROID_LINKER , * args ) else args } So commands effectively go through: /system/bin/linker64 → PRoot → Alpine → command This lets the bundled PRoot code run despite the noexec restriction. Connecting Rust and Kotlin My AI daemon is written in Rust, while the sandbox is managed by Kotlin. I connected them using a small NanoHTTPD server running only on localhost. return when ( session . uri ) { \"/health\" -> handleHealth () \"/execute\" -> handleExecute ( session ) \"/manage_process\" -> handleManageProcess ( session ) else -> errorJson ( Response . Status . NOT_FOUND , \"Unknown path: ${session.uri}\" ) } The Rust daemon sends authenticated requests to 127.0.0.1:49481 . The AI currently gets two tools: sandbox_execute - run Linux commands sandbox_manage_process - manage background processes Persistent shell sessions I wanted the sandbox to behave like an actual terminal instead of starting from scratch for every command. If the AI runs: cd /root/project export TEST = hello the next tool call stays in /root/project and keeps the environment variable. Each conversation gets a separate persistent shell: Conversation A → Shell A Conversation B → Shell B This keeps cwd/environment state while preventing different conversations from affecting each other. Background commands are isolated differently. Each one gets a separate PRoot executor and is tracked by a process manager. The AI can start a long-running command, continue doing other things, then check its logs or kill it later. Installing Alpine The sandbox manager handles the full setup: Download Alpine → Extract → Fix hardlinks/permissions → apk update → Install tools → Ready The hardlink fix was needed because some Alpine tar entries reference files that haven’t been extracted yet, which caused extraction failures on Android. Right now the sandbox comes with Bash, Python + pip, Node.js, Git, curl, wget, jq, SSH, lftp and rsync. The main parts are: ProotExecutor - executes commands LinuxSandboxManager - lifecycle/setup SandboxBridgeServer - Rust ↔ Kotlin bridge SandboxProcessManager - background processes PersistentSandboxShell - per-conversation shell state There is still more I want to improve, especially filesystem sharing, networking and reliability for longer agent tasks. But the main system is finally working: Zero-Assist can now give an AI agent a real Linux userspace running locally inside an Android app without requiring root. This started with the idea of somehow giving the AI a tiny Linux computer inside the app. Now it actually has one."}, {"post_id": 28451, "ts": "2026-07-14T18:16:53Z", "hours": 4.185, "text": "Giving My Android AI App Its Own Linux Sandbox One of the biggest problems with my app was that a lot of the features I wanted to build actually needed a real desktop environment. Things like: Running shell commands Browser automation Using desktop CLI tools Installing packages on demand Running scripts ZeroClaw already supports these kinds of capabilities, but on Android I couldn’t really use them to their full potential. The app simply didn’t have an environment that could support everything properly. So I decided… Why not give the app its own minimal Linux desktop? The Initial Research Luckily, I already had some experience with Linux. I had previously played around with: Linux distros PRoot chroot Minimal desktop environments So I started looking at every possible approach. Option 1 — Android’s default shell At first I thought about using the shell that every Android app already gets. It looked simple. But after experimenting with it, I realized it was missing a lot of the commands and tools I actually needed. That completely defeated the purpose of having a proper sandbox. So I dropped that idea. Option 2 — chroot Next I started researching chroot. Honestly, from a technical point of view, chroot is amazing. It gets extremely close to a real Linux environment. Performance is great and it behaves much more like an actual desktop installation. There was only one problem. It requires a rooted device. That was an immediate deal breaker. I don’t want someone to root their phone just to use my app. So chroot was out too. Option 3 — PRoot After a lot of brainstorming, reading documentation, and trying different ideas, I finally settled on PRoot. It isn’t perfect. There are still some limitations compared to a real Linux installation, but I’ll talk about those another time. The important part is this: No root required Works on normal Android devices Can run a real Linux userspace Supports the tools my AI actually needs For what I’m trying to build, it was the best balance. Choosing the distro I wanted something lightweight. Really lightweight. So I picked Alpine Linux . The base image is around 5 MB . Yes… Literally 5 MB. After installing the packages I consider “essential” for the AI (things like Python, pip, curl, git, etc.), the whole environment comes to roughly 700 MB . That gives the AI a solid starting point without making users download multiple gigabytes on day one. If more tools are needed later, the AI can simply install them inside the sandbox. Current Progress I’ve finally started implementing everything. So far I’ve added: sandbox_client.rs sandbox_main.kt Configuration files for the sandbox Default package lists that will be installed automatically There’s still a lot left to build, but the foundation is finally there. This is probably one of the biggest architectural changes I’ve made to the app so far. Instead of trying to force Android to behave like a desktop, I’m giving the AI its own Linux environment that it can actually work inside. Still a long way to go !!! MAKE SURE TO FOLLOW THE PROJECT YES THE IMAGE IS AI GENETRATED , BUT I DIDNT KNOW WHAT TO DO FOR BETTER EXPLAINATION SO I DID IT :D"}, {"post_id": 25882, "ts": "2026-07-10T11:26:04Z", "hours": 11.9064, "text": "After long time … hello guys making this devlog after very long time , i had an issue ,when i was cleaning up my project , removing the dead code and optimizing the app where i was taking the help of the antigravity for this , i accidently deleted the hardware side in the zero claw (engine of zero assist) which was in beta i was just remaining to test it because i didn’t have any proper hardware to do it so it was remaining to test and unfortunately i didn’t even had the code pushed on the GitHub which made the situation worst so now I’ve nearly fixed it , the app is successfully building properly and now I’ve decided to push the code every day if possible on the GitHub to avoid this type of things and I’m writing this devlog because of the new rule i came by where only 10 hrs. will be counted MY BAD LUCK now my 12 hrs. are going to waste 😭😭because i was not uploading the devlog and the time increased so uploading this asap so that my next time will be counted !!"}, {"post_id": 12384, "ts": "2026-06-20T06:53:41Z", "hours": 26.2319, "text": "Devlog #8 — Zero-Assist I added a Skills Section to Zero-Assist, and it’s probably one of the more useful things we’ve shipped so far. What It Is Skills are installable modules built by the Zeroclaw community that extend what the app can do. Things like Doc Writer, Auto-Coder, and more — each one teaches the app how to handle a specific type of task better. Install one, and Zero-Assist reads it and starts applying it automatically. No setup, no configuration, just tap and it works. These aren’t shortcuts or preset prompts. The app actually understands the skill and uses it to make smarter decisions when you’re working. Always Growing The library isn’t static. The community keeps adding new skills and updating existing ones, so the app naturally gets more capable over time without needing a big update from our end. Whatever gets added is available to you immediately. Big thanks to everyone in the Zeroclaw community who built and contributed skills — this whole section runs on your work. What’s Next We’re making it easier for more people to submit skills, and we’re looking at adding ratings and changelogs so you can track what’s new and what’s worth installing. More soon."}, {"post_id": 9693, "ts": "2026-06-16T03:16:35Z", "hours": 2.8722, "text": "Devlog #7 — Multi-Agent Architecture & Custom Agent Builder Zero-Assist just got a major upgrade. What if instead of one AI assistant, you had an entire team of AI specialists working together? That’s exactly what I’ve built. Multiple Agent System Zero-Assist now supports multiple specialized agents, each optimized for a specific role and workflow. Master Agent The brain of the operation. Orchestrates all agents Assigns tasks intelligently Monitors progress Routes requests to the best agent Researcher Agent Your personal information hunter. Searches the web Collects and analyzes data Returns structured insights Filters noise and focuses on relevant information Coder Agent Built for developers. Writes code Reviews code Fixes bugs Assists with architecture and implementation Planner Agent Turns chaos into clarity. Breaks down goals Creates actionable roadmaps Generates timelines Organizes complex projects Custom Agent Builder The most exciting feature in this update. You can now create your own specialized AI agents with just a few clicks. Customize: System Prompt Temperature Tags & Capabilities LLM Model Agent Role & Personality Want an AI Startup Advisor? Create one. Want a Bug-Hunting Expert? Create one. Want a Cybersecurity Specialist? Create one. The possibilities are endless. Why This Matters Most AI applications rely on a single model trying to do everything. Zero-Assist takes a different approach. Instead of one assistant, you get an entire ecosystem of AI specialists that can collaborate, delegate tasks, and work together to solve problems more efficiently. Each agent has: Its own configuration Its own expertise Its own behavior Its own model settings This creates a more scalable and intelligent workflow compared to traditional AI assistants. Vision The long-term goal isn’t just to build another chatbot. It’s to build an AI Operating System where users can create, orchestrate, and manage teams of intelligent agents that work together to accomplish complex tasks. And this is only the beginning. Screenshot attached below."}, {"post_id": 9256, "ts": "2026-06-15T15:22:43Z", "hours": 22.2608, "text": "#Devlog 6 -Zero-Assist Shipped a big update today. The app can now handle complex tasks much more reliably, and tools run in parallel instead of sequentially — so heavy workloads finish noticeably faster without the app choking midway. The smarter behavior actually came from Trimming down the soul.md, longterm-memory.md, agents.md, and user.md files reduced token usage significantly, and the model started reasoning better almost immediately. I tested it across several complex tasks and the output quality genuinely caught me off guard — results I didn’t expected!!! Voice has been a pain point for a while. Dug into the Piper latency issues, restructured the integration, and the pipeline is much smoother now. Still sounds robotic — that’s a problem I haven’t cracked yet — but the lag that made it frustrating to use is mostly gone. Overall the app feels like a different version of itself. More capable, leaner, and faster. Dropping Demo vid of the test runs below so you can see what it’s actually doing now. here is demo video too : https://youtube.com/shorts/F8sLD21dcWo"}, {"post_id": 6943, "ts": "2026-06-11T17:21:14Z", "hours": 15.2497, "text": "Devlog 5 – Channel Integration and Tool Access Today I spent most of my time working on one of the biggest features of the project so far: Channel Integration . The channels system already supports multiple platforms such as Telegram, WhatsApp, Slack, Discord, and several others. My goal was to connect these channels with the assistant so that it can interact with users across different platforms while still having access to the tools and capabilities available on the phone. To achieve this, I worked on properly connecting the Rust bridge with the Kotlin application. Once the communication layer was working correctly, I was able to expose several powerful capabilities to the assistant, including: Access to phone storage and files Accessibility-based device control Web tools and online actions Composio integrations File management and manipulation Cross-platform channel communication Various assistant tools that were previously isolated from each other This was a fairly complex task because multiple systems needed to communicate reliably. I also used AI assistance throughout the development process to help debug issues, validate approaches, and speed up implementation. In total, this work took roughly 12 hours . At the moment, I have not pushed the code to the repository because the feature still requires extensive testing. Since it touches storage access, tool execution, and communication across multiple services, I want to ensure everything is stable before making it public. Once I complete the testing phase, I will push the implementation to the repository. This feature significantly expands what the application can do. Instead of being just a chatbot, it is evolving into a full assistant platform capable of interacting with external services, managing files, controlling parts of the device, and communicating through multiple messaging platforms. The long-term vision is to create a system where users can build highly capable personal assistants that can perform real tasks rather than simply generate text. There is still a lot more work ahead, but today’s progress was a major step toward that goal. Stay tuned—some very exciting features are currently in development."}, {"post_id": 5481, "ts": "2026-06-09T09:01:08Z", "hours": 12.9753, "text": "Zero-Assist Devlog #4 — The Phone Is Now a Personal Chat Server so Devlog 4 is here. The main thing i fixed this time is the channels section of the app. channels are basically how Zero-Assist can gets input or give output to other app — like Telegram, WhatsApp, and other messaging apps. once you connect them, the app starts listening. but whats different now that channels are working, the phone isn’t just an AI assistant anymore. it’s your personal home server that you can message like a real in-person. what this actually means in practice: say you’re away and you message your own Telegram bot: “water the plants” — Zero-Assist picks that up, figures out what you mean, and either goes with an MQTT signal to your smart home setup or directly talks to your microcontroller over USB or BLE , whichever is available. no extra apps, no cloud, just your phone doing the work. same idea works for your homelab. you can message “ping my website” and the app will run the actual shell command on your phone and report back. this does need a one-time manual connection to set up, but after that it just works. basically the phone becomes a chat-controlled home automation that you own fully here is no cloud included except the llm , which you can also use the local llm . what i’m planning to add next: i’m planning a live dashboard screen for this — not raw logs, but a simplified readable feed. something like: “message received via Telegram → running plant watering command → sent MQTT signal ✓” the idea is it’s useful for people who like seeing what’s happening here, but written in plain language instead of technical stuff for the normal users . the hard part this time was : most of the time on this devlog went into connecting the Rust backend (which handles all the channel logic) to the Kotlin front-end of the app , so getting them to work together cleanly took a lot of debugging and was honestly the most frustrating part of this whole update. got it working though. more soon."}, {"post_id": 4198, "ts": "2026-06-07T12:47:20Z", "hours": 7.8933, "text": "devlog -3 added a new shared folder option int the app so that the app can share the storage from phone , it can open files edit files , manipulate the files and do lots of stuff with it , added the screenshot below"}, {"post_id": 3507, "ts": "2026-06-06T14:09:20Z", "hours": 18.2539, "text": "Devlog #2 is here!! so after the piper TTS update in devlog #1, I’ve been working on something way bigger — I added Composio integration to Zero-Assist for those who don’t know what composio is — it’s basically a platform that connects AI agents to over 1,000 apps like Gmail, Slack, GitHub, Notion, Salesforce, Google Drive and a lot more. think of it as the bridge between your AI and the rest of the internet. so now Zero-Assist can actually do things for you like — → send and read messages (if you give it the right permissions) → make notes in Notion automatically → send mails on your behalf → store your files to Google Drive → and a lot more depending on which apps you connect the best part is this feature was already there inside ZeroClaw (which is what Zero-Assist is built on), so it wasn’t built from scratch — it was more about bringing it properly into the Android app and making it actually usable. check out the video ( https://drive.google.com/file/d/1ZO56Ekrq7fu205Epqx8fH-Vkt_E5xc16/view?usp=sharing ) for a small demo of how it works"}, {"post_id": 1568, "ts": "2026-06-03T17:45:24Z", "hours": 3.4811, "text": "ZERO-ASSIST devlog 1 IM working on Zero-Assist voice assistant app on which im already working from March , the app has lots of features , i completely vibe coded the app but now im working on the finishing part of the app so today i improve the voice assist mode , the voice was really slow on cheaper Android phones. When you spoke to it, you’d wait 10+ seconds before hearing the voice response. What I fixed today 1️⃣ Made It Stop Waiting So Long Before: App waited up to 2.5-5 seconds to make sure the TTS Engine was ready Now: Only waits 0.9-1.8 seconds Result: Faster feedback !! You can also check the app here ( https://github.com/Tanmay-1122/Zero-Assist )"}]...
|
Title: Zero-Assist by @Tan-May | Stardance
Devlog Title: Zero-Assist by @Tan-May | Stardance
Devlogs:
ZERO-ASSIST devlog 1 IM working on Zero-Assist voice assistant app on which im already working from March , the app has lots of features , i completely vibe coded the app but now im working on the finishing part of the app so today i improve the voice assist mode , the voice was really slow on cheaper Android phones. When you spoke to it, you’d wait 10+ seconds before hearing the voice response. What I fixed today 1️⃣ Made It Stop Waiting So Long Before: App waited up to 2.5-5 seconds to make sure the TTS Engine was ready Now: Only waits 0.9-1.8 seconds Result: Faster feedback !! You can also check the app here ( https://github.com/Tanmay-1122/Zero-Assist )
Devlog #2 is here!! so after the piper TTS update in devlog #1, I’ve been working on something way bigger — I added Composio integration to Zero-Assist for those who don’t know what composio is — it’s basically a platform that connects AI agents to over 1,000 apps like Gmail, Slack, GitHub, Notion, Salesforce, Google Drive and a lot more. think of it as the bridge between your AI and the rest of the internet. so now Zero-Assist can actually do things for you like — → send and read messages (if you give it the right permissions) → make notes in Notion automatically → send mails on your behalf → store your files to Google Drive → and a lot more depending on which apps you connect the best part is this feature was already there inside ZeroClaw (which is what Zero-Assist is built on), so it wasn’t built from scratch — it was more about bringing it properly into the Android app and making it actually usable. check out the video ( https://drive.google.com/file/d/1ZO56Ekrq7fu205Epqx8fH-Vkt_E5xc16/view?usp=sharing ) for a small demo of how it works
devlog -3 added a new shared folder option int the app so that the app can share the storage from phone , it can open files edit files , manipulate the files and do lots of stuff with it , added the screenshot below
Zero-Assist Devlog #4 — The Phone Is Now a Personal Chat Server so Devlog 4 is here. The main thing i fixed this time is the channels section of the app. channels are basically how Zero-Assist can gets input or give output to other app — like Telegram, WhatsApp, and other messaging apps. once you connect them, the app starts listening. but whats different now that channels are working, the phone isn’t just an AI assistant anymore. it’s your personal home server that you can message like a real in-person. what this actually means in practice: say you’re away and you message your own Telegram bot: “water the plants” — Zero-Assist picks that up, figures out what you mean, and either goes with an MQTT signal to your smart home setup or directly talks to your microcontroller over USB or BLE , whichever is available. no extra apps, no cloud, just your phone doing the work. same idea works for your homelab. you can message “ping my website” and the app will run the actual shell command on your phone and report back. this does need a one-time manual connection to set up, but after that it just works. basically the phone becomes a chat-controlled home automation that you own fully here is no cloud included except the llm , which you can also use the local llm . what i’m planning to add next: i’m planning a live dashboard screen for this — not raw logs, but a simplified readable feed. something like: “message received via Telegram → running plant watering command → sent MQTT signal ✓” the idea is it’s useful for people who like seeing what’s happening here, but written in plain language instead of technical stuff for the normal users . the hard part this time was : most of the time on this devlog went into connecting the Rust backend (which handles all the channel logic) to the Kotlin front-end of the app , so getting them to work together cleanly took a lot of debugging and was honestly the most frustrating part of this whole update. got it working though. more soon.
Devlog 5 – Channel Integration and Tool Access Today I spent most of my time working on one of the biggest features of the project so far: Channel Integration . The channels system already supports multiple platforms such as Telegram, WhatsApp, Slack, Discord, and several others. My goal was to connect these channels with the assistant so that it can interact with users across different platforms while still having access to the tools and capabilities available on the phone. To achieve this, I worked on properly connecting the Rust bridge with the Kotlin application. Once the communication layer was working correctly, I was able to expose several powerful capabilities to the assistant, including: Access to phone storage and files Accessibility-based device control Web tools and online actions Composio integrations File management and manipulation Cross-platform channel communication Various assistant tools that were previously isolated from each other This was a fairly complex task because multiple systems needed to communicate reliably. I also used AI assistance throughout the development process to help debug issues, validate approaches, and speed up implementation. In total, this work took roughly 12 hours . At the moment, I have not pushed the code to the repository because the feature still requires extensive testing. Since it touches storage access, tool execution, and communication across multiple services, I want to ensure everything is stable before making it public. Once I complete the testing phase, I will push the implementation to the repository. This feature significantly expands what the application can do. Instead of being just a chatbot, it is evolving into a full assistant platform capable of interacting with external services, managing files, controlling parts of the device, and communicating through multiple messaging platforms. The long-term vision is to create a system where users can build highly capable personal assistants that can perform real tasks rather than simply generate text. There is still a lot more work ahead, but today’s progress was a major step toward that goal. Stay tuned—some very exciting features are currently in development.
#Devlog 6 -Zero-Assist Shipped a big update today. The app can now handle complex tasks much more reliably, and tools run in parallel instead of sequentially — so heavy workloads finish noticeably faster without the app choking midway. The smarter behavior actually came from Trimming down the soul.md, longterm-memory.md, agents.md, and user.md files reduced token usage significantly, and the model started reasoning better almost immediately. I tested it across several complex tasks and the output quality genuinely caught me off guard — results I didn’t expected!!! Voice has been a pain point for a while. Dug into the Piper latency issues, restructured the integration, and the pipeline is much smoother now. Still sounds robotic — that’s a problem I haven’t cracked yet — but the lag that made it frustrating to use is mostly gone. Overall the app feels like a different version of itself. More capable, leaner, and faster. Dropping Demo vid of the test runs below so you can see what it’s actually doing now. here is demo video too : https://youtube.com/shorts/F8sLD21dcWo
Devlog #7 — Multi-Agent Architecture & Custom Agent Builder Zero-Assist just got a major upgrade. What if instead of one AI assistant, you had an entire team of AI specialists working together? That’s exactly what I’ve built. Multiple Agent System Zero-Assist now supports multiple specialized agents, each optimized for a specific role and workflow. Master Agent The brain of the operation. Orchestrates all agents Assigns tasks intelligently Monitors progress Routes requests to the best agent Researcher Agent Your personal information hunter. Searches the web Collects and analyzes data Returns structured insights Filters noise and focuses on relevant information Coder Agent Built for developers. Writes code Reviews code Fixes bugs Assists with architecture and implementation Planner Agent Turns chaos into clarity. Breaks down goals Creates actionable roadmaps Generates timelines Organizes complex projects Custom Agent Builder The most exciting feature in this update. You can now create your own specialized AI agents with just a few clicks. Customize: System Prompt Temperature Tags & Capabilities LLM Model Agent Role & Personality Want an AI Startup Advisor? Create one. Want a Bug-Hunting Expert? Create one. Want a Cybersecurity Specialist? Create one. The possibilities are endless. Why This Matters Most AI applications rely on a single model trying to do everything. Zero-Assist takes a different approach. Instead of one assistant, you get an entire ecosystem of AI specialists that can collaborate, delegate tasks, and work together to solve problems more efficiently. Each agent has: Its own configuration Its own expertise Its own behavior Its own model settings This creates a more scalable and intelligent workflow compared to traditional AI assistants. Vision The long-term goal isn’t just to build another chatbot. It’s to build an AI Operating System where users can create, orchestrate, and manage teams of intelligent agents that work together to accomplish complex tasks. And this is only the beginning. Screenshot attached below.
Devlog #8 — Zero-Assist I added a Skills Section to Zero-Assist, and it’s probably one of the more useful things we’ve shipped so far. What It Is Skills are installable modules built by the Zeroclaw community that extend what the app can do. Things like Doc Writer, Auto-Coder, and more — each one teaches the app how to handle a specific type of task better. Install one, and Zero-Assist reads it and starts applying it automatically. No setup, no configuration, just tap and it works. These aren’t shortcuts or preset prompts. The app actually understands the skill and uses it to make smarter decisions when you’re working. Always Growing The library isn’t static. The community keeps adding new skills and updating existing ones, so the app naturally gets more capable over time without needing a big update from our end. Whatever gets added is available to you immediately. Big thanks to everyone in the Zeroclaw community who built and contributed skills — this whole section runs on your work. What’s Next We’re making it easier for more people to submit skills, and we’re looking at adding ratings and changelogs so you can track what’s new and what’s worth installing. More soon.
After long time … hello guys making this devlog after very long time , i had an issue ,when i was cleaning up my project , removing the dead code and optimizing the app where i was taking the help of the antigravity for this , i accidently deleted the hardware side in the zero claw (engine of zero assist) which was in beta i was just remaining to test it because i didn’t have any proper hardware to do it so it was remaining to test and unfortunately i didn’t even had the code pushed on the GitHub which made the situation worst so now I’ve nearly fixed it , the app is successfully building properly and now I’ve decided to push the code every day if possible on the GitHub to avoid this type of things and I’m writing this devlog because of the new rule i came by where only 10 hrs. will be counted MY BAD LUCK now my 12 hrs. are going to waste 😭😭because i was not uploading the devlog and the time increased so uploading this asap so that my next time will be counted !!
Giving My Android AI App Its Own Linux Sandbox One of the biggest problems with my app was that a lot of the features I wanted to build actually needed a real desktop environment. Things like: Running shell commands Browser automation Using desktop CLI tools Installing packages on demand Running scripts ZeroClaw already supports these kinds of capabilities, but on Android I couldn’t really use them to their full potential. The app simply didn’t have an environment that could support everything properly. So I decided… Why not give the app its own minimal Linux desktop? The Initial Research Luckily, I already had some experience with Linux. I had previously played around with: Linux distros PRoot chroot Minimal desktop environments So I started looking at every possible approach. Option 1 — Android’s default shell At first I thought about using the shell that every Android app already gets. It looked simple. But after experimenting with it, I realized it was missing a lot of the commands and tools I actually needed. That completely defeated the purpose of having a proper sandbox. So I dropped that idea. Option 2 — chroot Next I started researching chroot. Honestly, from a technical point of view, chroot is amazing. It gets extremely close to a real Linux environment. Performance is great and it behaves much more like an actual desktop installation. There was only one problem. It requires a rooted device. That was an immediate deal breaker. I don’t want someone to root their phone just to use my app. So chroot was out too. Option 3 — PRoot After a lot of brainstorming, reading documentation, and trying different ideas, I finally settled on PRoot. It isn’t perfect. There are still some limitations compared to a real Linux installation, but I’ll talk about those another time. The important part is this: No root required Works on normal Android devices Can run a real Linux userspace Supports the tools my AI actually needs For what I’m trying to build, it was the best balance. Choosing the distro I wanted something lightweight. Really lightweight. So I picked Alpine Linux . The base image is around 5 MB . Yes… Literally 5 MB. After installing the packages I consider “essential” for the AI (things like Python, pip, curl, git, etc.), the whole environment comes to roughly 700 MB . That gives the AI a solid starting point without making users download multiple gigabytes on day one. If more tools are needed later, the AI can simply install them inside the sandbox. Current Progress I’ve finally started implementing everything. So far I’ve added: sandbox_client.rs sandbox_main.kt Configuration files for the sandbox Default package lists that will be installed automatically There’s still a lot left to build, but the foundation is finally there. This is probably one of the biggest architectural changes I’ve made to the app so far. Instead of trying to force Android to behave like a desktop, I’m giving the AI its own Linux environment that it can actually work inside. Still a long way to go !!! MAKE SURE TO FOLLOW THE PROJECT YES THE IMAGE IS AI GENETRATED , BUT I DIDNT KNOW WHAT TO DO FOR BETTER EXPLAINATION SO I DID IT :D
Giving Zero-Assist Its Own Linux Sandbox A lot of features I want in Zero-Assist need actual Linux tools: shell commands, Python, Git, Node.js, CLI tools, etc. I didn’t want this to require root, so I built a local Alpine Linux sandbox using PRoot that runs entirely on-device. The architecture is basically: AI daemon → sandbox tool → HTTP bridge → Kotlin sandbox manager → PRoot → Alpine Getting PRoot running One annoying problem was Android’s noexec restrictions. PRoot is stored inside the app’s data/native library directory and can’t always be executed normally. The solution was launching it through Android’s dynamic linker: private fun buildProcessArgs ( command : String , workingDir : String ): Array < String > { val args = arrayOf ( prootPath , "--rootfs=$rootfsPath" , "--bind=/dev" , "--bind=/proc" , "--bind=/sys" , "--bind=$homePath:/root" , "--bind=$tmpPath:/tmp" , "-0" , "-w" , workingDir , "/bin/sh" , "-c" , command ) return if ( ANDROID_LINKER != null ) arrayOf ( ANDROID_LINKER , * args ) else args } So commands effectively go through: /system/bin/linker64 → PRoot → Alpine → command This lets the bundled PRoot code run despite the noexec restriction. Connecting Rust and Kotlin My AI daemon is written in Rust, while the sandbox is managed by Kotlin. I connected them using a small NanoHTTPD server running only on localhost. return when ( session . uri ) { "/health" -> handleHealth () "/execute" -> handleExecute ( session ) "/manage_process" -> handleManageProcess ( session ) else -> errorJson ( Response . Status . NOT_FOUND , "Unknown path: ${session.uri}" ) } The Rust daemon sends authenticated requests to 127.0.0.1:49481 . The AI currently gets two tools: sandbox_execute - run Linux commands sandbox_manage_process - manage background processes Persistent shell sessions I wanted the sandbox to behave like an actual terminal instead of starting from scratch for every command. If the AI runs: cd /root/project export TEST = hello the next tool call stays in /root/project and keeps the environment variable. Each conversation gets a separate persistent shell: Conversation A → Shell A Conversation B → Shell B This keeps cwd/environment state while preventing different conversations from affecting each other. Background commands are isolated differently. Each one gets a separate PRoot executor and is tracked by a process manager. The AI can start a long-running command, continue doing other things, then check its logs or kill it later. Installing Alpine The sandbox manager handles the full setup: Download Alpine → Extract → Fix hardlinks/permissions → apk update → Install tools → Ready The hardlink fix was needed because some Alpine tar entries reference files that haven’t been extracted yet, which caused extraction failures on Android. Right now the sandbox comes with Bash, Python + pip, Node.js, Git, curl, wget, jq, SSH, lftp and rsync. The main parts are: ProotExecutor - executes commands LinuxSandboxManager - lifecycle/setup SandboxBridgeServer - Rust ↔ Kotlin bridge SandboxProcessManager - background processes PersistentSandboxShell - per-conversation shell state There is still more I want to improve, especially filesystem sharing, networking and reliability for longer agent tasks. But the main system is finally working: Zero-Assist can now give an AI agent a real Linux userspace running locally inside an Android app without requiring root. This started with the idea of somehow giving the AI a tiny Linux computer inside the app. Now it actually has one.
Hello guys, devlog here!I finally got the Linux sandbox in Zero-Assist working end-to-end! The sandbox runs Alpine Linux through PRoot directly on Android without requiring root.Getting it working was harder than expected, though. I ran into several Android-specific issues.Fixing the SandboxThe first problem was Alpine’s heavy use of BusyBox hardlinks. My TAR extractor used File.copyTo(), which didn’t preserve executable permissions, causing errors like:proot error: execve(“/bin/sh”): Permission denied I fixed this by preserving executable bits:linkTarget.copyTo(outFile, overwrite = true) if (linkTarget.canExecute()) { outFile.setExecutable(true, false) } Some hardlinks were also extracted before BusyBox itself, so I added a second repair pass after extraction to restore critical commands like /bin/sh, /bin/ls, and /bin/cat.Symlinks were another problem because Android can block their creation. I added a fallback that copies the target when creating the actual symlink fails:try { Files.createSymbolicLink(outFile.toPath(), Paths.get(linkName)) } catch (e: Exception) { fallback.copyTo(outFile, overwrite = true) } I also had problems directly executing PRoot because some Android app directories can be noexec. The solution was to launch PRoot through Android’s system linker:val args = arrayOf( “/system/bin/linker64”, prootPath, “–rootfs=$rootfsPath”, “/bin/sh”, “-c”, command ) I also added corrupted download detection and automatic Alpine mirror fallback, making the rootfs installation much more reliable.Giving the AI Linux ToolsAfter getting the sandbox stable, I added two AI tools:sandbox_execute — Executes commands inside Alpine and supports persistent shell state, working directories, environment variables, timeouts, and background processes.sandbox_manage_process — Lets the AI list, monitor, read logs from, and kill background processes.For example, the AI can execute:{ “command”: “python3 –version && uname -a”, “working_dir”: “/root” } Or start a background server:{ “command”: “python3 -m http.server 8000”, “background”: true } The execution pipeline now looks like:AI Agent ↓ Rust Tool Layer ↓ Authenticated Local HTTP Bridge ↓ Kotlin Sandbox Manager ↓ PRoot ↓ Alpine Linux The Rust runtime communicates with the Kotlin sandbox through a localhost bridge on 127.0.0.1:49481, protected by a randomly generated per-process bearer token.And now the sandbox is fully functional end-to-end!The AI can execute real Linux commands, install packages, maintain persistent shell sessions, run scripts, start background processes, inspect their logs, and manage them — all inside Alpine Linux running directly on Android without root.This was one of the hardest parts of Zero-Assist so far, but now the AI finally has its own real Linux environment to work with.
okay so after spending lots of time on this issue , im finally able to make this work again , the problem was that (bin/sh, ust/bin/env) never extracted because of one code issue where i accidently mentioned them as the read only memory in the apps storage so the distro was installing also getting extracted but becacuse of the read only type of file , the app was not able to perform any actions on it , so now after taking the help from the open code now the sandbox is fully functional and working on every devices , also ive added some default packages which will get installed during the setup of the sandbox such as (wget, git , python3, jq, py3-pip, nodejs ,lftp and the openssh-client) just using the single command (apk add –no-cache bash curl wget git jq python3 py3-pip nodejs openssh-client lftp rsync)
So i basically went through the whole device control system and hardened it. the planner was splitting compound goals like “open instagram and message rohit” into separate calls which broke everything. also fixed it so the loop doesn’t just bail on the first response - it actually executes the action first. scroll was crashing if the planner didn’t send a direction so now it defaults down. and exceptions in the callback handler were just silently killing the process so now everything is caught and logged properly. added loop detection so it doesn’t get stuck repeating the same thing, post-action screen verification, and 44 tests to cover it all. very happy that it worked , it took lots of time but eventually i think the results are very very good though this thing not works great on the local ai’s but with the cheap api like openrouter/free , this thing can give pretty good results
Device Control Development Update Yesterday I worked on expanding the Device Control system in my AI assistant. The idea behind this feature is to allow the AI to perform real actions on an Android device using the Accessibility Service . When the user gives a command such as “Subscribe to MrBeast on YouTube” , the main AI analyzes the request and delegates it to the Device Control tool. Current Workflow Launch the required application using: PackageManager.getLaunchIntentForPackage() startActivity() Capture a compressed screenshot of the current screen. Analyze the screenshot to identify UI elements and their screen coordinates. Navigate the interface and perform actions through the Android Accessibility APIs. Current Features Open applications Tap at (x, y) Swipe gestures Type text These core primitives allow the AI to interact with almost any Android application through UI automation. Future Improvements My main goals are to improve both speed and accuracy . Instead of navigating through multiple screens for simple system operations, I plan to add native high-level commands directly into the Device Control tool, such as: flashlight_toggle wifi_toggle bluetooth_toggle mobile_data_toggle volume_set brightness_set take_screenshot lock_screen open_notifications open_quick_settings go_home go_back open_recents These commands will allow the AI to execute common Android actions instantly without relying on visual navigation. For more complex tasks—such as interacting with third-party applications—the tool will continue using the screenshot + coordinate-based navigation pipeline. Long-Term Vision The goal is to build a hybrid Device Control system: Native commands for common Android operations (fast, reliable, and efficient). Vision-guided UI automation for complex interactions within any application. This architecture will significantly reduce execution time, improve reliability, and make the assistant capable of handling virtually any task on an Android device.
Devlog: Google Workspace Integration This week I worked on integrating Google Workspace into Zero-Assist , allowing the AI to securely access services like Gmail, Google Drive, Google Docs, and Google Sheets after the user grants permission. The ZeroClaw engine already supports Google Workspace CLI (GWS) , but it was originally built for desktop Linux and expects a desktop environment with GWS already installed. Since Zero-Assist runs inside an Alpine Linux sandbox on Android using PRoot , that approach doesn’t work directly. Instead of rewriting the integration, I kept the existing architecture and adapted it for Android. What I Implemented I modified the sandbox installation process so that GWS is installed automatically whenever the user installs the standard sandbox packages. This means users don’t need to manually install or configure the CLI. Inside the app, I added a new Google Workspace plugin under: Connections → Plugins → Installed → Google Workspace When the user signs in, the Android app completes the OAuth flow and generates the required Google Workspace configuration files. To bridge Android and the Linux sandbox, I use the existing Android ↔ PRoot bridge . The plan is: User Login ↓ Android creates GWS credentials ↓ Credentials copied into PRoot sandbox ↓ Sandbox GWS CLI uses the same credentials ↓ AI can access approved Google services This keeps authentication native while allowing the Linux CLI to work without requiring the user to touch the terminal. Google Cloud Setup I also created a dedicated Google Cloud Console project for Zero-Assist. The project uses a Web Application OAuth client , which is required by the Google Workspace CLI authentication flow. I enabled the necessary APIs, including: Gmail API Google Drive API Google Docs API Google Sheets API More APIs can be enabled as additional integrations are added. Current Problem The authentication flow itself works correctly, and users can successfully sign in. The issue is that the generated credential/configuration files are not being copied correctly into the Linux sandbox . Because of this, the sandboxed GWS CLI cannot find the required authentication files, causing every Google Workspace command to fail. The current challenge isn’t OAuth—it’s reliably synchronizing credentials between Android and the PRoot environment. Once this bridge is working, users will simply sign in once, choose which Google services they want to grant access to, and Zero-Assist will be able to securely interact with those services without any manual setup. note:This devlog is written with hands and then passed to the chatgpt to format it with the .md because im very lazy to play with those colons and #’s
Devlog here , so now i added the new cool animation (thinking orb ) this animation was totally inspired from the ( https://orbs.jakubantalik.com/ ) but the problem was that the orb was written in the typescript which wont work in our app cause our app is written in the kotlin so what i did was i downloaded the zip file from the repo pasted it to the claude and told him to convert it into kotlin for me and surprisingly the results was amazing , i will share the video recording too , and the other part i worked on was i added a few voices for my apps from the hugging face so now the user can use the custom voices too and also if he wants to use some of the default voices , the option is there do download in the app, some voices ( https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_US/lessac/medium/en_US-lessac-medium.onnx , https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_US/lessac/medium/en_US-lessac-medium.onnx , https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_GB/alan/medium/en_GB-alan-medium.onnx ) for someone whose interested …
Hello Hello Hello new devlog here , so now i started with the implementation of the MCP believe me guys once the app gets the MCP the app will go to another level , like it will then support literally any app (any app) it can perform actions like the mcp does but in simpler way also when i started with implementation i hit the problem again the code is there in the zeroclaw engine but again the problem is that its meant to run on the desktop so now we again have to do some changes in code and make the mcp run natively on the phone , i also found out some resources to do it like ( https://github.com/modelcontextprotocol/kotlin-sdk ) which is good so now the idea is something similar like shown in the screenshot below taken from the chat gpt ….
Devlog time :> so now I’m continuing with the implementation of the MCP in the app like i previously talked now when i did some tinkering with the rust code using the ai , i managed to get all the connected MCP tools into the config file of the ai the config is getting updated now but the problem is that the config is constantly keeps changing don’t know what’s happening i guess the the problem is in the toml config generator which is glitching out , so now im trying fixing it from lots of time now , i guess i might have to use the antigravity to fix this but i exhausted my weekly limit cause I’m on a free tier 😭😭.. ill catch up with yall later till then bye bye 🙆..
Update !!! new devlog here … so now after doing some more research on the mcps and the implementation plans etc etc now im finally going all on it , ive added a ui component of the MCP in the Connection/Plugin/MCP , where i added few premade mcp options like (GitHub , brave search , external postgre sql etc ..) also there i added the option of the add custom server in which use can add custom server where currently the transport options are (STDIO,HTTP,SSE,LOCALHOST_STDIO (where you can add local mcp servers using the apps like termux etc ) so now that the ui is completed now i will move on to the connection part of the ui to the backend rust engine via uniffi )
Check this out !! so yesterday i finished with the MCP implementation of the app , i implemented 4 transport method (STDIO,,HTTP,SSE and the LOCALHOST_STDIO) so when i was testing out i found out that only one of them is working properly , (the http one ) to which i connected multiple apps , mcp’s etc everything was working fine but when i tested the other transport method , not even a single one was working because it all needed the desktop to run with the specific packages so unfortunately i was not able to use it and i also find out about the nasa mcp where they daily upload the images mars rover images etc so i tried to test it but the problem was that the mcp was not http instead it was the STDIO so i was sad cause i had to fix first the mcp issue then test it but when i was in school in break i was getting board and opened the app and i had an idea like cant we just convert the normal stdio into the http mcp using the termux ? after asking to claude it said definitely we can do this so then i setuped the env(i will add a screenshot below ) and made a proxy server which converts the normal stdio mcp to the http steamtable and i was then able to access it locally using my app (i will add the image of it too) and i managed to connect to the mcp and fetch the images , now everything is working completely fine just the remaining part is the remaining transport which i will fix it some how !! also i will add some images i fetched below...
|
1793915713.8639529
|
1794779713.8639529
|
|
66798
|
Zero hour by @youngrich | Stardance
|
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Zero hour by @youngrich | Stardance
|
1793724550.7148314
|
1794329350.7148314
|
|
66840
|
Zero hour by @youngrich | Stardance
|
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Zero hour by @youngrich | Stardance
|
1793724622.121096
|
1794329422.121096
|
|
17876
|
Zero Kelvin by @suitedn0ob | Stardance
|
suitedn0ob
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Zero Kelvin by @suitedn0ob | Stardance
|
1793926269.0169578
|
1794531069.0169578
|
|
12106
|
Zero G pack by @Navneet | Stardance
|
Navneet
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Zero G pack by @Navneet | Stardance
|
1793461873.62713
|
1794066673.62713
|
|
56376
|
Zeratul by @SilentSword | Stardance
|
SilentSword
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-30T18:28:36Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a SlackBot by following the guide from here, Stardance!", "repo": "https://github.com/SilentSword123456/Zeratul-SlackBot", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 58324, "ts": "202 [{"post_id": 58324, "ts": "2026-08-30T18:20:39Z", "hours": 0.3233, "text": "Hey, I completed the mission, and then I even added my own command “/zeratul-fact”, witch uses the uselessfacts api to give you a random (or useless XD) fact :)"}]...
|
Title: Zeratul by @SilentSword | Stardance
Devlog Title: Zeratul by @SilentSword | Stardance
Devlogs:
Hey, I completed the mission, and then I even added my own command “/zeratul-fact”, witch uses the uselessfacts api to give you a random (or useless XD) fact :)
Ships:
I made a SlackBot by following the guide from here, Stardance!...
|
1793944574.6647205
|
1794030974.6647205
|
|
18135
|
ZerOS by @kelvindabest | Stardance
|
kelvindabest
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ZerOS by @kelvindabest | Stardance
|
1794041295.176264
|
1794646095.176264
|
|
14848
|
Zephyr-Mesh by @Whyater | Stardance
|
Whyater
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Zephyr-Mesh by @Whyater | Stardance
|
1793843547.3609502
|
1794448347.3609502
|
|
12387
|
Zephyr by @prabavac | Stardance
|
prabavac
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Zephyr by @prabavac | Stardance
|
1793378884.200622
|
1793983684.200622
|
|
43131
|
Zephyr OS by @rayyan_nidal_k | Stardance
|
rayyan_nidal_k
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Zephyr OS by @rayyan_nidal_k | Stardance
|
1793936946.8544571
|
1794541746.8544571
|
|
9439
|
Zephyr MK.1 by @OpenAeroLab | Stardance
|
OpenAeroLab
|
0
|
1.81
|
0
|
[]
|
[{"post_id": 7679, "ts": "2026 [{"post_id": 7679, "ts": "2026-06-12T20:35:21Z", "hours": 1.8136, "text": "Hi, I’m Maxime. I’m from Belgium and study engineering in high school. This is my first ever devlog, so I want to introduce the Zephyr MK.1. I chose this name because Zephyrus is the ancient Greek personification of the west wind. I started this project some time ago and work on it sporadically, with the goal of completing it during the summer holidays. My goal for this project is to build an RC plane from scratch (with some inspiration from Instructables, of course). I am currently using SolidWorks to model my airplane, and the photo below shows the assembly I have thus far."}]...
|
Title: Zephyr MK.1 by @OpenAeroLab | Stardance
De Title: Zephyr MK.1 by @OpenAeroLab | Stardance
Devlogs:
Hi, I’m Maxime. I’m from Belgium and study engineering in high school. This is my first ever devlog, so I want to introduce the Zephyr MK.1. I chose this name because Zephyrus is the ancient Greek personification of the west wind. I started this project some time ago and work on it sporadically, with the goal of completing it during the summer holidays. My goal for this project is to build an RC plane from scratch (with some inspiration from Instructables, of course). I am currently using SolidWorks to model my airplane, and the photo below shows the assembly I have thus far....
|
1793335682.5761487
|
1793940482.5761487
|
|
71473
|
Zephyr - My own programming language by @DeyanM1 | Zephyr - My own programming language by @DeyanM1 | Stardance...
|
DeyanM1
|
0
|
6.6
|
0
|
[]
|
[{"post_id": 82990, "ts": "202 [{"post_id": 82990, "ts": "2026-10-26T13:45:23Z", "hours": 6.6047, "text": "This is my initial upload of my programming language Zephyr. It is a “variable based” programming language written by me."}]...
|
Title: Zephyr - My own programming language by @De Title: Zephyr - My own programming language by @DeyanM1 | Stardance
Devlogs:
This is my initial upload of my programming language Zephyr. It is a “variable based” programming language written by me....
|
1793627497.9049973
|
1794232297.9049973
|
|
51191
|
Zephy something by @Zeph | Stardance
|
Zeph
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Zephy something by @Zeph | Stardance
|
1793379270.1892402
|
1793984070.1892402
|
|
56881
|
Zenzo by @samkomedved319 | Stardance
|
samkomedved319
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Zenzo by @samkomedved319 | Stardance
|
1793404262.7413428
|
1794009062.7413428
|
|
42737
|
Zenvar(OFC) by @zenvar | Stardance
|
zenvar
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Zenvar(OFC) by @zenvar | Stardance
|
1793890493.4179008
|
1794495293.4179008
|
|
58302
|
Zentens website by @Zenten | Stardance
|
Zenten
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Zentens website by @Zenten | Stardance
|
1793483768.0953174
|
1794088568.0953174
|
|
57902
|
Zentens personal sanctuary by @Zenten | Stardance
|
Zenten
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Zentens personal sanctuary by @Zenten | Sta Title: Zentens personal sanctuary by @Zenten | Stardance...
|
1793462094.4204717
|
1794066894.4204717
|
|
72354
|
Zenski_extension by @jegtaiwo | Stardance
|
jegtaiwo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Zenski_extension by @jegtaiwo | Stardance
|
1793450836.4083395
|
1794055636.4083395
|