Wow, where do I start. OK, here is my setup. It's a regular Win64 machine where I have Claude Code CLI running. Everything I say below equally applies to Gemini CLI and Codex.
It's important to note that it's an agent, not a chat. The key distinction is this: a chat is like asking someone on a forum "Hey guys, can you help me with my code?" — they'll try, but without access to the codebase and environment, they'll be guessing at times and you'll be copy-pasting back and forth. Cheap or free, limited utility, but that's what most people do. Agents are different — they are a layer between the chat and your PC. They can read and write files, use compilers, debuggers, all kinds of tools. There is a permission system and sandboxing, but it's rather annoying to confirm each action: "Yes, you can read that file", "Yes, you can launch the compiler", "Yes, you can search the web".
There is a way to run it unrestricted so any action is automatically allowed. Potentially destructive, but the worst thing that's ever happened to me is the agent got confused and reverted its own working copy changes, or committed without explicit permission. So that's how I run it — it's therefore capable of running anything on my PC, with network access, reading and writing files in allowed folders. My programs target a bunch of systems and architectures, so I have a number of physical and virtual machines representing macOS, Linux and Windows of varying bitness and CPU arch — all accessible via SSH.
To answer the specific questions:
1/2) Yes, the AI is allowed to run anything on my machine and remote machines via SSH (this is mainly to run tests; all compilation is done on the host via cross-compilers).
2) Yes, it knows how to use cdb and disassemblers. If you give it a new tool that it doesn't know, it'll learn it in seconds just by running
newtool.exe --help or reading the accompanying doc. For cdb and kd (console debugger and kernel debugger), the main issue is that console apps cannot use full bidirectional pipes — at least not on Windows. The AI can prepare a sequence of commands to run at once, or you'd have to do it by hand. So far it cannot enter commands interactively and read output; rather it can execute a command and see what it returns. For disassemblers, the existing ones like Ghidra or IDA have limited scripting options. Instead, what works well is a Python package called Capstone — which is basically a script-based disassembler.
3) The reason I'm not using Lazarus IDE — there is simply no need. I can just say "refactor my code in such and such way" and it will do it. I can tell it to add a button and it will modify both LFM and PAS as asked. That being said, the visual part of the AI is still not as good as the textual and logical one. I do sometimes revert to Lazarus IDE to rearrange controls the way I like rather than explaining all that in plain text.
Overall observations: what works great is anything that has testable text-based or binary input and output — math, logic, databases, protocols, text and binary formats. What works less great is the visual part. The AI's idea of what looks great may not match yours, and it's rather weak at prototyping UI in Lazarus — unless you resort to a trick and ask it to create a pseudo-graphics text-based UI or HTML UI first, then ask it to do something similar in Lazarus.
For those who don't know, I've put together a
FreePascal/Lazarus HTML renderer in ~2 weeks; doing that solo would have likely taken years. So back to the above point — the logical part was easier because the AI can rapidly test and prototype with any HTML/CSS input and retest everything after changes. However, the visual part — rendering artefacts like incorrect margins/paddings, SVG strokes — requires human input to explain what exactly is wrong. As I said, the visual part of the AI's perception is still maturing, though it can see and analyse screenshots.
All coding is governed by two MD files called
CLAUDE.md (or
AGENT.md or
GEMINI.md) — these basically tell the AI what it may, should, must and cannot do, along with your preferences, paths to tools, etc. The file in the home folder defines global operation and the file in a project folder defines things specific to that project.
How this works in general: you open a terminal at your project folder. From there you could instruct it to fix a specific bug or add a new feature. For something complex, it makes sense to start with a discussion about what you'd like, and over a few iterations you both arrive at a better understanding of what's needed. Then you can just tell it to make a detailed plan and execute it. A very important thing is that the AI needs a detailed task description of what you want. Anything that is not described, it will fill in with assumptions — and those may not be what you expect. So before coding anything complex, have a discussion about the architecture and what specifically you want to achieve.
All in all, it feels like you got a few assistants as your disposal who we'll take on anything you throw at them, though like humans, they may not exactly do what you expect or how you expected it, but the productivity gains are enormous. Oh, and you can set up its personality, I sometimes like mine to swear in Russian or English - a more fun way to work.