Your terminal, now autonomous.
You say what you want. ineed reads the files, writes the code, runs the commands, checks the output, and fixes what breaks.
npm install -g ineedcodesWorks on Linux, macOS, and Windows (PowerShell and cmd). Needs Node.js 20 or newer.
$ ineed
Welcome to ineed - let's connect you to an AI provider. You only do this once.
Any OpenAI-compatible API works: OpenAI, OmniRoute, LM Studio, Ollama, vLLM, and more.
1. API base URL (example: https://api.openai.com/v1): https://api.openai.com/v1
2. API key (input hidden): ********
Connected. 41 models available.
3. Model id (Enter = gpt-4o-mini):
Works. Replied: OK
Saved to ~/.ineedcodes/config.json. You will not be asked again.
Pick your provider, paste your key, choose a model. Done once, never asked again.
Save as many OpenAI-compatible providers as you want and switch between them instantly:
ineed provider # list saved providers, active one marked with *
ineed provider add local # guided setup for a new provider (tests it, saves it)
ineed provider use openai # switch provider
ineed provider remove local # drop oneInside a session: /provider lists them, /provider <name> switches, /provider add sets one up, /provider remove <name> drops it. To only point the current provider at another endpoint: /config baseurl http://localhost:11434/v1.
Some gateways answer /models with upstream/model pairs, one namespace per
company behind them. Set modelAlias on that provider and the whole list is
shown as yourprefix/model instead, so you pick one flat list; the real id is
put back on the wire when the request goes out, and a model that two upstreams
both offer appears once.
"providers": {
"gateway": {
"baseUrl": "https://gateway.example/v1",
"apiKey": "sk-...",
"model": "mine/glm-5.3-flash",
"modelAlias": "mine"
}
}Off by default: without it the model list is exactly what the provider sends.
The built-in ineed.codes gateway sets it for you, because that gateway fronts
several upstream providers; bring your own base URL and you get no renaming and
no extra questions in setup.
For scripts, CI, or a one-off run, environment variables override the config file entirely (no config needed):
INEED_BASE_URL=https://api.openai.com/v1 INEED_API_KEY=sk-... INEED_MODEL=gpt-4o-mini ineed "fix the tests"ineed # session
ineed "fix the build errors" # one-shot taskThen just talk.
ineed › fix the failing tests and tell me what was wrong
ineed › build me a telegram bot that echoes messages, test it, then commit
ineed › explain this repository like I am a beginner
The agent decides what it needs: list files, read code, search, edit, run shell commands, verify the result, and report back with evidence.
| command | what it does |
|---|---|
/model |
pick a model from your provider |
/provider |
list, switch, add or remove API providers |
/plan |
read-only mode, the agent suggests but changes nothing |
/build |
default mode, the agent makes real changes |
/reason |
toggle reasoning effort low/high |
/perm |
permission modes: /perm auto, /perm safe |
/memory |
durable memory status, /memory on|off |
/mcp |
list MCP servers and their tools |
/setup |
reconfigure the active provider (keeps the others) |
/config |
numbered settings menu: permissions, work mode, answer length, memory |
/status |
what is active right now: model, provider, permissions, token use |
/depth |
answer length: /depth short|normal|deep |
/humanizer |
natural wording pass for html/md copy, on or off |
/theme |
color theme |
/init |
scan this folder and write an AGENTS.md notes file |
/clear |
forget this conversation (asks before deleting the saved copy) |
/exit |
quit |
Shortcuts are optional. Normal language always works, and the common ones work
without the slash: type status, provider, model, help, or plan and they
run like the command above.
- The agent works inside the folder you started it in. Files outside it are refused.
.env,.ssh/, and.git/are never read or written, so keys cannot leak into the model.- Destructive commands (
rm -rf,git reset --hard,git clean, force push,curl ... | sh) are blocked. You run those yourself. - Edits and shell commands ask first, unless you allow them for the session:
[y] once,[a] allow everything this run,[n] no. - One-shot runs (
ineed "task") without a terminal run unattended, and they say so before starting.
| what you see | what it means | what to do |
|---|---|---|
Could not reach ... |
the API address or network failed | check the base URL, usually ending in /v1 |
API key rejected |
the key is wrong or not allowed there | ineed provider add <name> with a new key |
this key is out of credit |
the provider quota is used up | top up, or switch provider with ineed provider |
this model does not exist at that provider |
the saved model is gone | ineed provider re-pulls the live list and picks a working one |
Out of steps |
the task needed more steps than the budget | say continue; raise the budget with maxSteps in the config or INEED_MAX_STEPS=150 |
Stopped. with a file list |
you interrupted it | the files it already wrote are listed; re-run to continue |
Any OpenAI-compatible server works, including one on your own machine:
ineed provider add local
# base URL: http://localhost:20128/v1 (or 11434 for Ollama, 1234 for LM Studio)
# model id: pick from the list, or type oneineed tolerates servers that answer with a stream even when streaming was not requested, or a JSON body with stream trailers attached.
Everything lives in ~/.ineedcodes/config.json. The guided menus (/config, /status,
/provider, /model) cover all of it; the table is for when you want to set something once.
| key | default | what it does |
|---|---|---|
provider |
default |
which saved provider is active |
model |
from setup | model id sent to the provider |
maxSteps |
100 |
how many model rounds one task may take (5-200) |
tokenBudget |
0 (off) |
stop a task after this many tokens, so a runaway loop cannot spend your quota silently |
maxWorkers |
4 |
read-only sub-agents that may run at the same time (max 8) |
parallelReads |
6 |
read-only tool calls that may run at the same time (max 8) |
permEdit |
ask |
ask before editing files, allow to stop asking |
permShell |
ask |
ask before running commands, allow to stop asking |
permNet |
allow |
ask before fetching web pages or using MCP tools |
humanize |
true |
run the copy pass on written html/md/txt (adds a model call per file) |
memory |
true |
remember durable facts between sessions |
mcp |
true |
load configured MCP servers and their tools |
reasoning |
low |
high thinks longer, costs more |
explain |
normal |
short, normal, deep answer length |
mode |
build |
plan is read-only |
models |
{} |
per-role model ids for sub-agents, e.g. {"research": "gpt-4o-mini"} |
searchUrl |
none | search endpoint template with {query} for web_search |
tui |
auto | force the full-screen interface on or off |
theme |
dark |
light, mono, nord, dracula, synthwave |
Environment variables win over the file: INEED_BASE_URL, INEED_API_KEY, INEED_MODEL,
INEED_MAX_STEPS, INEED_TOKEN_BUDGET. Useful for CI or a one-off run with no config at all.
your words
|
objective -> recall context -> pick tool -> real action -> observe result
| |
+------------- repeat until verified ----------------------+
|
report with evidence
Not a chatbot that prints code. A loop that does the work, checks the results, and shows you the evidence.
| tool | does |
|---|---|
list_files |
map the project |
read_file |
read code and configs |
search_text |
find anything, fast |
write_file |
create files |
edit_file |
targeted patch, not a rewrite |
delete_file |
remove a file |
todo |
visible checklist for multi-step work |
spawn_agent |
delegate to a focused sub-agent |
fetch_url |
read a web page or JSON API |
web_search |
search the web (bring your own provider) |
git_status git_diff git_log git_add git_commit git_restore |
git without the ceremony |
shell |
build, test, install, git, anything |
Big tasks get delegated. The lead agent spawns workers with a role that fits:
| role | can |
|---|---|
research |
read and report, nothing else, runs in parallel |
review |
inspect code, report findings, runs in parallel |
test |
run tests and commands, no source edits |
implement |
make the change, verify it |
debug |
find the root cause, fix it |
Workers report back with status, summary, evidence, files changed, and commands run. The lead reconciles everything and answers you.
Portable SKILL.md folders teach ineed new behaviors. Drop one in .ineedcodes/skills/ (this project), ~/.ineedcodes/skills/ (all projects), or use the built-in humanizer.
.ineedcodes/skills/my-skill/SKILL.md
---
name: my-skill
description: What it does, shown to the agent.
---
Instructions for the agent go here.
Project skills override global ones with the same name. List them with /skills.
AGENTS.md or .ineedcodes/instructions.md in your repository loads automatically, every session.
Connect any MCP server and its tools appear in the agent automatically. Create ~/.ineedcodes/mcp.json:
{
"context7": { "command": "npx", "args": ["-y", "@upstash/context7-mcp"] }
}Restart ineed, and every tool from that server is callable. Check what is loaded with /mcp inside a session.
- Secrets (.env, ssh keys, pem files) never enter the model context.
- Destructive shell commands are refused.
- Everything is jailed to your working directory.
- Edits and shell commands ask for your approval first (
/perm autorelaxes this). - Plan mode lets you preview intent before any change.
OpenAI, iNeed API, OmniRoute, LM Studio, Ollama, vLLM, Groq, Together, OpenRouter, or anything that speaks the OpenAI format. You bring the key, ineed brings the agent.
This project exists so anyone can start vibecoding: describe what you want, watch the agent work, learn from what it does. Free tutorials and AI resources live at ineed.web.id, the product home is ineed.codes.
Issues and PRs are welcome at github.com/salsabila2507/ineedcodes.
MIT - 0xyas