Nicheloom visits: 58,301 all-time · 7,637 in the last 7 days

The opportunity tracker for new startups.

Today: 1,008 launches · Niche of the day: specialized calculation tools · See what launched today →

Agent in 9 Lines Python

Get picks like this daily. Today's launch numbers, the top launches, AI and tech news, and a daily opportunity pick, straight to your inbox.

Want to reach these readers? Sponsor an issue.

I asked myself: what would a minimal implementation of an agent look like?Something that works out of the box, is a real agent with tool calling, but without 1000s of lines of code, without dozens or hundreds of npm or pypi dependencies. Something with just a few 'essential' features (not a whole kitchen sink that most agent harnesses come with nowadays).An implementation close to pseudocode that you can look at in one page, everything there at a glance, no scrolling.This is the agent.py I ended up with so far: import json,sys;from subprocess import getoutput as sh;from urllib.request import Request as R,urlopen url=sys.argv[1];h=[];b=dict(model="gpt-5.6",input=h,tools=[dict(type="custom",name="sh")]) while p:=input("> "): h+=[dict(role="user",content=p)];H={"Content-Type":"application/json"} while True: o=(r:=json.load(urlopen(R(url,json.dumps(b).encode(),H))))["output"] h+=o;c=[i for i in o if i["type"]=="custom_tool_call"];z=r["usage"]["total_tokens"]/10500 if not c:print(o[-1]["content"][0]["text"],f'\n[{z:06.3f}%]');break h+=[dict(type="custom_tool_call_output",call_id=i["call_id"],output=sh(i["input"])) for i in c] It is a bit code golfed but I think it is fairly readable- imports are all from stdlib (0 external dependencies!)- assumes there is an inference api endpoint running somewhere- assumes the inference api endpoint is openai-like- model hardcoded to "gpt 5.6" (=> Sol), can easily be changed to e.g. open weight (kimi k3, glm 5.2 etc)- api endpoint url is passed as arg to the python script- configures only 1 custom tool: 'sh'- 'sh' is sufficient for interacting with the environment in an open ended way- new api output gets added to history ("h")- if api output contains tool calls the tool calls get executed- agent gives control back to user when the last model response is without tool calls- agent message to user shows % of context window usedNoteworthy:no dependencies other than python stdlib (!)- less startup time- less dependency churn- less supply chain attack vector surface- less code to verify and understandno mcp, no plugins, no security theater- if you want to add something specific: add it explicitly- adapt the environment to give the agent access or restrict access to tools, resources, network etc (the env is the security boundary, not the harness)no system prompt- every token in context window is precious- current strong models do fine without steering via system prompt (or are even harmed by long overly specific system prompts designed for models from months ago)- system prompt or agents.md context can easily be added if needed (agent can also discover it or get prompted to read from environment as is)how to run/deploy the agent- design the environment you want to give the agent (container, docker, sandbox of your choice)- start an inference api endpoint that is openai-like (support the request/response shape used in agent.py above)- inference api endpoint can be as simple as a proxy to openai api that adds credentials/api key- adapt as you want/need it, change the model, remove/alter context window behaviour, add tools, etc etcLooking for any feedback you have to make it more clear or even simpler!

HN · launched Jul 22, 2026 · 21 upvotes (top 27%) · 0 views

Niche: ai agent development platforms · 598 launches, 22 in the last 7 days ▼ -29% · Explore this niche →

Category and tags

  • Horizontal
  • Agent / copilot
  • Developer
  • AI-native
  • Hobby / open-source project

Visit website ↗ Source listing ↗

Could you build this?

Yes A minimal 9-line agent loop invoking an LLM provider's tool-calling endpoint can be written directly in minutes.

Discussion

9 comments analyzed.

Concerns raised: Tool description impact on agent behavior and performance, Code readability vs. compactness tradeoff

Feature requests: Ungolfed/expanded version for clarity, Move headers outside loop, Move context_usage inside conditional, Hard-code static values

Competitors

Other products that read as similar to this one : 289 launches clear the similarity bar, closest 8 shown.

Attention rank: #88 of 290 (itself plus its competitors, highest first, normalized so YC and Product Hunt are compared fairly).

Launched 263 days after the earliest competitor.

The niche, labels, vibe code rating and competitor comparison on this page are analysis by Nicheloom. If you use them, please credit nicheloom.com. How you may use our data.