HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
nemasu
asmttpd
Assembly2014–2026
nemasu / asmttpd

asmttpd

Web server for Linux written in amd64 assembly.

9Distinct people
10Mentions
3Explicit recommenders
3.1KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Web server for Linux written in amd64 assembly.

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

I really like this. I have written a comment previously about it recently (https://news.ycombinator.com/item?id=47548393) but essentially, I believe that the more…

Imustaskforhelp used a recommendation phrase. 3 indexed comments match. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 12:45:45 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year10 dated mentions

Observed mentions: 2014-02-03 11:14:10 UTC to 2026-03-28 23:57:38 UTC.

01232014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments20142015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC312
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC211
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC000
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC101
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC211
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC000
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC000
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC101
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC000
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC000
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC000
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC101

What Hacker News says

10 sources
Imustaskforhelp·Mar 28, 2026Recommendation phrase
I really like this. I have written a comment previously about it recently (https://news.ycombinator.com/item?id=47548393) but essentially, I believe that the more tooling/projects within this space, the better. I have had an idea recently where I can use something like https://github.com/nemasu/asmttpd (assembly webserver) created by nemasu (they are on HN with same name) and deploying this under container from:scratch or gvisor on a single Virtual machine to have thousands of isolated git still on a more safer degree. Asmttpd has made me gone into a rabbit hole of finding minimalist ways to create web servers but I don't know asm/low-level. I kinda wish to Try Zig for a project like this but I have been unable to really get the feels of running a web server on anything low level (Rust requires lots of deps etc.), I really love golang for
Read the rest
web servers but I am nowadays allured by the idea of even more lower level language. also for git, Github has been going on a meteoric decline which also makes me want to wish for more git viewer alternatives
In TreeTrek – A raw Git repository viewer web app
I love blog posts like these: they don't go after real-world problems directly but rather explore what's even possible. paulfurtado in this comment section mentioned UPX[0] as a way to get binaries even smaller. Funnily enough UPX even managed to decrease the size of the asmttpd web server for me: ### build stage ### FROM ubuntu:18.04 as builder RUN apt update RUN apt install -y make yasm as31 nasm binutils git RUN git clone https://github.com/nemasu/asmttpd.git asmttpd RUN mv asmttpd/* . RUN rm -rd asmttpd RUN make release # i have the upx binary on my machine in this case COPY ./upx-3.96-amd64_linux/upx upx RUN ./upx --brute asmttpd ### run stage ### FROM scratch COPY --from=builder /asmttpd /asmttpd COPY ./index.html /web_root/index.html CMD ["/asmttpd", "/web_ro
Read the rest
ot", "8080"] With a 4 byte index.html my total image size is now 5.3kB! [0]: https://github.com/upx/upx
In Tiny Container Challenge: Building a 6kB Containerized HTTP Server
ndesaulniers·May 19, 2015Recommendation phrase
I'll try and get this building for OSX. For the uninitiated, might I recommend my: http://nickdesaulniers.github.io/blog/2014/04/18/lets-write-... Though, this is written in yasm syntax, which is slightly different. Also, keep an eye out for a blog post on Interpreters, Compilers, and JITs I'm working on (cleaning it up and getting it peer reviewed this or next week)! update 1 Actually, would the syscall's be different between Linux and OSX? Let's find out, once this builds! hammers away update 2 Got it building and linking. bus error when run, debugging with gdb. update3 Can't generate dwarf2 debug symbols for OSX? $ yasm -g dwarf2 update 4 Careful, this tries to listen on port 80 [0] (0x5000 (LE) == 5*16^1 == 80), I would never run any assembly program off the web with elevated privileges. I recommend 0xB8B0 (LE, port 3000). update 5
Read the rest
> Actually, would the syscall's be different between Linux and OSX? Looks like yes: http://unix.stackexchange.com/a/3350 These might be close to shim out (OSX and Linux at least share a calling convention, unlink Windows). I'll upstream what I have. [0] https://github.com/nemasu/asmttpd/blob/master/main.asm#L24
In Asmttpd – Web server for Linux written in amd64 assembly
Perhaps I am searching too closely for parallels here, but what would be the analogue of this from a software engineering perspective? Maybe writing something like an HTTP server in assembly, or something? I remember this (https://github.com/nemasu/asmttpd) popping up on HN some time ago. Writing your own kernel, or compiler? Building your own 8-bit microcomputer, and then running something on it? (A project like that was part of a course I took at college, and it did a decent job at demystifying many common concepts about computing).
In 'Gods' Make Comeback at Toyota as Humans Steal Jobs From Robots
Pretty neat! It's awesome how assembly these days is reasonably high level: https://github.com/nemasu/asmttpd/blob/master/http.asm It dawns on me why we couldn't have shortcuts for several patterns that show up everywhere: - mov, mov, mov then call/syscall could just be written as call(arg, arg, arg) since it's not that difficult to figure out which argument needs to go to which register if there was a defined order of arguments. - push push push push <function body> pop pop pop pop <ret> could just be a define really. I realize that there are cases where you wouldn't necessarily do that, but that seems to be the minority. The compiler could just figure out what registers you use in the routine and push / pop those. If you want to keep a register, there could be added syntax for that. It seems in both of these cases the language optimizes
Read the rest
for simplicity and flexibility, ignoring the common case. Neither of these strike me as situations where introducing the abstraction would require a lot of compiler "magic" to guess and optimize. It's almost just string replacement. Then again, you could just write all this in C and let the compiler figure it out. Interesting stuff!
In Web server for Linux written in amd64 assembly

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.