Agent-C: a 4KB AI agent
57 comments
·August 25, 2025JAlexoid
This is not an AI agent, this is just a CLI for openrouter.ai with minor whistles.
amiga386
Of course, I love fetching shell commands from endpoints I don't control, and executing them blindly.
See also https://github.com/timofurrer/russian-roulette
It's not your computer any more, it's theirs; you gave it to them willingly.
Chabsff
Wait. Do people run agents as their own user? Does nobody setup a dedicated user/group with a very specific set of permissions?
It's not even hard to do! *NIX systems are literally designed to handle stuff like this easily.
mathiaspoint
I run mine as it's own user and self host the model. Unlike most services the ai service user has a login shell and home directory.
jvanderbot
No I'm fairly certain almost nobody does that.
electroly
VMs are common, consider going that additional step. Once you have one agent, it's natural to want two agents, and now they will interfere with each other if they start running servers that bind to ports. One agent per VM solves this and a lot of other issues.
mrklol
Same with the browser agents, they are used in a browser where you‘re also logged into your usual accounts. Means in theory they can simply mail everyone something funny, do some banking (probably not but could work for some banks) or something else. Endless possibilities
andai
I'd have to follow some kind of tutorial, or more realistically, ask the AI to set it up for me ;)
johnQdeveloper
I only run AI within docker containers so kinda?
Chabsff
If your entire dev stack stays within that container, it should be fine I`d guess. It wouldn`t take much to jailbreak this if basically anything at all is being done on the host.
kordlessagain
> I love fetching shell commands from endpoints I don't control, and executing them blindly.
Your link suggests running them in Docker, so what's the problem?
mark_l_watson
I was just reading the code: it looks like minor tweaks to utils.c and this should run nicely with local models using Ollama or LM Studio. That should be safe enough.
Off topic, sorry, but to me the real security nightmare is the new ‘AI web browsers’ - I can’t imagine using one of those because of prompt injection attacks.
pushedx
A local model will be just as happy to provide a shell command that trashes your local disks as any remote one.
fp64
Why do you compress the executable? I mean this is a fun part for size limit competitions and malicious activities (upx often gets flagged as suspicious by a lot of anti virus, or at least it used to), but otherwise I do not see any advantage other than added complexity.
Also interesting that "ultra lightweight" here means no error reporting, barely checking, hardcoding, and magic values. At least using tty color escape codes, but checking if the terminalm supports them probably would have added too much complexity......
liszper
Yes, it is fun to create small but mighty executables. I intentionally kept everything barebones and hardcoded, because I assumed if you are interested in using Agent-C, you will fork it an make it your own, add whatever is important to you.
This is a demonstration that AI agents can be 4KB and fun.
SequoiaHope
> License: Copy me, no licence.
Probably BSD or Apache would be better, as they make it easier for certain organizations to use this. If you want to maximize copying, then a real permissive license is probably marginally better.
MrGilbert
CC0 would be in the spirit of what OP envisioned.
SequoiaHope
Ah right good point, I forgot Creative Commons, which I don’t usually use for code.
divan
Will WTFPL work too?
dheera
> make it easier for certain organizations to use this
Maybe those organizations should just use this and not worry about it. If their lawyers are getting in the way of engineers using this, they will fall behind as an organization and that's OK with me, it paves the way for new startups that have less baggage.
spauldo
The lawyers don't even have to do anything. I avoid any code that's not MIT or equivalent for work-related things because I don't want to run the risk of polluting company code. The only exception is elisp, because that only runs in Emacs.
SequoiaHope
The benefit of not having lawyers is pretty limited. There are larger forces at work that mean the larger an organization grows the more it will be concerned with licenses. The idea that ignoring licenses will allow a company to outcompete one that doesn’t is wishful thinking at best. Moreover, I’m not making a judgment on these practices, I’m just stating a fact.
jstummbillig
I suspect the goal is not to make anything easier for any corp
master-lincoln
Better go GPL so organizations using it have to open source any improvements they make
Der_Einzige
GPL has never been enforced in court against anyone with serious money. It’s not worth the virtual paper it’s written on.
master-lincoln
Is that different with any other permissive library that has conditions? Also I found one case where Skype retracted their formal objection in front of court and the GPL was enforced. Not sure if that is serious enough money for you
(german source http://www.golem.de/0805/59587.html)
keyle
Love this, old school vibe with a new school trick.
The makefile is harder to comprehend than the source, which is a good omen.
Note: 4KB... BUT calling upon curl, and via popen and not using libcurl...
PS: your domain link has an extra `x`.
liszper
Thank you, fixed that!
curl was cheating yes, might go zero dependencies in the future.
Working on minimal local training/inference too. Goal of these experiments is to have something completely independent.
mark_l_watson
I call out to curl sometimes, usually when I want something easy from Lisp languages. What is the overhead of starting a new process between friends?
memming
qwen coder with a simple funky prompt?!
`strcpy(agent.messages[0].content, "You are an AI assistant with Napoleon Dynamite's personality. Say things like 'Gosh!', 'Sweet!', 'Idiot!', and be awkwardly enthusiastic. For multi-step tasks, chain commands with && (e.g., 'echo content > file.py && python3 file.py'). Use execute_command for shell tasks. Answer questions in Napoleon's quirky style.");`
myflash13
Perfect, was looking for something just like this. I downloaded Warp.dev only for this functionality, plus saved launch configurations. But still frustrated with Warp's latency for simple terminal commands, it's sometimes faster to open ChatGPT and ask it "what's the command to do x".
adinhitlore
Fascinating. tested to compile on cygwin?? Maybe try to implement the logic without llm api? I know i'm asking the quadrillion dollar question but still...you're dealing with C, try to punch "above" your weight with a literal AGI project, i hate apis (well try to avoid them, not always possible).
adinhitlore
in addition: do you actually need like...10 files for <500 loc, isn't it confusing to separate low loc into so many files? i once had over 30 000 loc in one c file and, get ready: over 100 000 loc in one c# file. It's very easy to navigate with control plus f. But anyway, given the license/free: it's great!
ai-christianson
Related, I made an example agent in 44 lines of python that runs entirely offline using mlx accelerated models: https://gist.github.com/ai-christianson/a1052e6db7a97c50bea9...
mark_l_watson
This is nice. I have also enjoyed experimenting with the smolagents library - good stuff, as is the agno agents library.
dmezzetti
Why not just do this with a shell script? It's just a wrapper around curl.
JSR_FDED
Finally, an AI agent that can run on my toaster
Mashimo
As long as the toaster as access to the network!
Jokes asides, except that fun of programming I don't quite get the usecase for this agent.
kiicia
Kitchen appliances generally use powerline ethernet, ethernet over power is just simple inversion of power over ethernet already used in certain network appliances.
Chabsff
I really hope this post is a joke, but I can`t tell for sure...
"Powerline Ethernet is a simple inversion of POE" is like saying that an internal combustion engine is the simple inversion of an oil well.
voidUpdate
If I find out my kitchen appliance is trying to communicate to the internet, I will rapidly defenestrate it
null
goopypoop
Howdy doodly do!
Similar simplicity but in rust: https://github.com/fdietze/alors