I kept switching tabs and it was quietly killing my focus
My old flow when building an API looked like this: write a route in the editor, alt-tab to Postman, set up a request, fire it, read the response, alt-tab back, fix something, repeat. That cycle sounds fast written out. In practice it was not. Every context switch had a cost, and by the end of a session I had a Postman collection full of half-finished requests that I would never clean up.
At some point I started using lac agent for the file editing side of things and noticed it had an HTTP request runner baked in. I mostly ignored it at first. Then I actually tried it, and now Postman barely opens on my machine.
What the HTTP runner actually does
Inside a lac agent session, you can describe the request you want to make in plain English and it will construct and fire it. You can also be explicit — paste a URL, specify headers, send a body. The agent reads the response and summarises it, or you can ask it to pull a specific field out of the JSON.
A typical session starts like this:
lac agent
Then inside the prompt:
Hit POST /api/auth/login with body { "email": "test@example.com", "password": "secret" } and show me the token from the response.
It fires the request, reads the JSON back, and surfaces the token. From there I can tell it to use that token in the next request. It keeps the context of the conversation, so you end up with something that feels more like a scripted test flow than a one-shot curl command.
You are not filling out fields in a GUI. You are just talking to something that knows what you are trying to do.
It works with headers too
Authorization headers, custom content types, API keys — all of it. You can say something like:
Add an Authorization: Bearer header using the token you just got and hit GET /api/me
And it will do exactly that. No copy-paste into a header field. No "environment variables" to configure. If your backend is running locally on a non-standard port, just mention it once and it carries it through the session.
This is particularly useful when you are developing an endpoint and you want to iterate fast. Write the handler, ask the agent to hit it, read the response inline, fix the handler — all without leaving the terminal. The diff preview and undo features covered in an earlier post mean you can roll back any file change if something goes sideways between requests.
Task tracking inside the agent
The other thing I underestimated was task tracking. When you are working on something with multiple moving parts — say, adding an auth layer to an existing API — there is a lot to hold in your head. Routes to update, middleware to write, tests to run.
You can dump that list into lac agent at the start of a session and ask it to track your progress through it. It will keep a running sense of what is done and what is still open, and it will remind you where you left off if the work spans multiple steps. Combined with project memory stored in .lac-memory.json, the agent can pick up a task list from a previous session without you re-explaining the whole context.
A practical starting prompt for this:
We are adding JWT auth to the posts API. Tasks: 1) add middleware to verify token 2) protect POST /posts 3) protect DELETE /posts/:id 4) test all three endpoints. Let's start with the middleware.
From there it works through each step. You can ask "what's left?" at any point and it knows exactly where you are.
Where this fits in the bigger lac-cli picture
If you are already using lac shell for command lookup and lac agent for file editing, adding the HTTP runner to your flow does not require learning anything new. It is just another thing you ask the agent to do. The same session that edited your route file can verify the route works. That tight loop is the whole point.
For teams worried about running requests against real endpoints, the agent is not doing anything magic — it is constructing standard HTTP calls. You can see exactly what it sends before it fires if you ask it to confirm first. It is not a black box.
Getting started
If you have not installed lac-cli yet:
pip install lac-cli
Or grab the install script:
curl -fsSL https://lacai.io/install.sh | bash
Then just run lac agent in whatever project directory you are working in. If you have an existing .lac-memory.json from a previous session, it will pick that up automatically and you will not need to re-explain your project structure.
One tip: if you are testing authenticated routes, start the session by asking the agent to log in and capture the token before you do anything else. That way every subsequent request in the session already has what it needs and you are not copying tokens around by hand.