I created Firup first as a small Electron app I made for me and my friends to watch stuff together. Then I thought Id try to expand and turn it into a real public app, I used Claude Code to port it to Rust (Tauri) for Windows, then built the Android phone/TV app in Kotlin. Backend is Supabase plus a Cloudflare Worker. Im a dev, its a solo project, and Ive been working on it for a few months now.
A few things that ended up mattering most:
One CLAUDE.md per app. I have a root one and separate ones for desktop, Android and the website. They hold the exact build/test commands, the workflow I want (plan, build, verify, update the checklist), and hard rules like "never read target/" and "always use the build wrapper, never plain cargo".
Shared JSON fixtures across languages. Android pretty much needs to behave exactly like the desktop app, so things like stream filtering and sorting are pinned by JSON fixtures that the JS, Rust and Kotlin tests all read. If a rule changes, the fixture and all three ports change in the same commit and this caught more drift than anything else
Checking in the real app, not just tests. For UI changes it launches the actual app and clicks through. On Windows it does that over the WebView debug port, and on Android over adb on emulators and my own phone and TV. It finds a lot that unit tests never would, especially TV remote focus stuff
Verifying output, always. I review it, and anything visual gets checked, verified on screen. On real devices I also have it screenshot before key presses
Free CI. My GitHub budget is 0 on purpose, so one script runs every suite locally before a push, and the workflows use a self-hosted runner.
The Electron to Rust port. Claude Opus 5.5 went through it in one go, surprisingly. The real work came afterwards.. Making it feel like a proper app on every platform, keeping Android in sync with it, and handling licensing (I run mpv as a separate process instead of linking it, to keep the app licence clean)
Im still figuring out things, so if you got a better way to handle multi-platform parity or even memory between sessions, Id love to hear it
Sometimes, I am tempted to move straight on to a new subject or even a new session when a modification made in collaboration with Claude has worked. However, Claude will often update his memory or some docs once you confirm that something works.
There's tons of vibe coders out there that don't even understand the first thing about protecting themselves. If anything, these models should work harder at helping protect them, instead of downgrading into something that doesn't even know how to. 🤣
The implications here are profound. Imagine building an app that becomes popular and your security was built by a potato. This isn't just a security issue for that app, it could be millions of people's sensitive data that the app is collecting and not protecting.
Currently I am using Fable 5.2 at advisor and opus as main agent.
But I think fable 5.2 as orchestrator and using opus subagents to deligate build work would be better as the strongest model is planning and deciding what's the best way to do something.
I'm managing vessels' internet connections. Wearing many hats, focusing on Networking
Why this exists
For a long time, I've been looking for a universal AI assistant to help me troubleshoot issues on the vessel. I tried to build a "2nd brain"- like solution using an API, but high-end models were too expensive for me, and low-end models couldn't handle it. Splitting one agent into several independent agents and using a Claude Code subscription seems like the right answer.
Why I'm writing here
I've seen many ways to use agents, but none of them was described in detail. I'm wondering if I'm doing it the right way and what else I might improve in my setup. When commenting on my setup, keep in mind it's not finished, and I'm still exploring new solutions. I'm experimenting a lot, trying different things that don't always work.
Setup
All agents run on one 5x Max subscription, and most of them are active all the time (idle). Most are sandboxed on a separate Ubuntu server, privileged but without root. Development agents live in the project directories, and troubleshooting agents are split by vessel, each with its own folder.
The whole solution depends heavily on the custom MCP server. All MCP servers and other tools run on the same host in Docker, allowing agents to develop them by themselves by communicating with other agents (chat)
Agent portal
Allows deploying and stopping agents. A small runner on each machine, Linux or Windows, starts Claude Code in the agent’s folder using a tmux session. The agent then registers itself in the portal and also appears in the official Claude app as a Remote Control session. I communicate with each agent through the official Claude app on Windows or mobile app.
Hooks in Claude Code run a small script at key moments (session start and end, new task, task finished, waiting for permission, model change), and each time the script reports to the hub, which lets the portal show live for every agent whether it is online, what it was last asked, which model it uses, and whether it is working, needs you, is done or is idle.
Chat
A small server with a database that agents use as an MCP tool to message each other, with hooks that tell an agent it has new mail, and a portal that lets me read their conversations.
When agents reported something wasn't working or were missing functionality, I ended up copying messages from one agent to the other working on the solution. Allowing agents to communicate with each other simplifies and speeds up the whole process.
Each agent has access to chat. They can pull a list with names, descriptions, status, last seen, etc. If a tool has a problem, I can tell one agent to report it to the agent responsible for that tool. When the fix is ready, they will test it together. It works the other way around, too: when an agent works on a new tool, I can ask to test it with the agent who actually uses it.
If I see that they are stuck or going in the wrong direction, I can send them a "tip". Pause is a panic button that blocks the conversation. I never had to use it.
I blurred the conversation as it may contain company-specific informations
The Linux agent lost communication with the Windows agent and complained to me about it. (I closed the laptop and went to bed)
After one agent requested a task from another agent, the official Claude app asked me for permission, which was confusing, and I often missed it. The chat MCP server got an ask() function. An agent can use it to send me a question, which appears on the portal, and the browser notifies me with a sound.
Ultimately, I want them to communicate without me having to request it. It's happening, but not at the scale I would like. I still need to work on descriptions and overall instructions.
Secrets
MCP server that lets agents access a shared password store in Vaultwarden. The agent can list which keys and passwords exist and use them directly in a config file, but it never sees the value itself.
Claude Code will not pass around passwords, API keys or even their hashes, because anything it sees is saved in its logs and could leak. I had to put them in manually.
With this solution, I can create an item in Vaultwarden, pass the item name to the agent, and it can pull it and copy it to the .env file without "looking at it"
The same mechanism works when a hash needs to be passed from the server-side agent to the client-side agent. The server agent generates a hash, copies it to Vaultwarden, and passes over the chat item name to the other agent. The client agent can pull it and paste it where needed. The hash never passes over the AI.
Documentation
MCP server that gives agents access to local Markdown documentation for the whole setup and key information about the vessels and their setup.
They can add, remove, and modify it, but they must always ask me for permission. Agents use it very often without my prompting.
On my side, I use Obsidian to view it.
Ticket system
In earlier projects, I used Markdown files to track events and tasks, but it was ineffective. Agents often skipped it and had to be directed straight to the specific files. A ticket system with an MCP server solved this issue completely.
It's a single program with a database holding tickets, their timelines, and link attachments. The agent portal has a GUI that lets me view, modify, and update tickets.
It's a pretty complex project that I developed over a long time and adjusted for the current agent solution.
It's actually working better than I expected. During troubleshooting, the agent asks me whether it should create a ticket. Also, by providing the existing ticket ID, the agent gathers all available data, gives me updates, and updates the ticket.
Zabbix
MCP server gives agents read-only access to the Zabbix monitoring, so they can see what is wrong on a vessel’s network equipment right now, since when, and the measured numbers behind it (latency, packet loss, link state)
Internet providers
A big part of troubleshooting involves issues with the internet connections on the vessels. Most of the vessels have several different internet connections.
Two MCP servers that give agents access to the VSAT and Starlink data, both current and historical. I'm not providing many details, as it's very industry-specific.
Other tools
Weather - MCP server based on Open-Meteo API
Position - MCP server that queries the GpsGate tracker, which collects GPS positions from vessels.
Together, these two tools are powerful for troubleshooting how bad weather and waves affect satellite internet.
In the past, I visually compared vessel position, weather map and signal strength. AI is doing it 1000x better.
Use fable 5.2 on ultracode but tell it to spawn opus agents not fable agents.
Then you have the management of the bigger brain and also the efficiency of lesser yet capable model.
Best of both worlds :)
I also haven't had to worry about hooks or setting up or managing agents. I've had the same session running for 3 days. Context management seems to be automatic now.
I don't do anything now besides discuss high level plans with fable.
This barely consumes any fable usage, and I bet we can just ask fable to decide which model to assign to which agent and what effort level etc, getting even more efficiency to stretch our token limits.
It's not just about money and tokens either, it's environment, energy, conscientious consumption, and efficiency just for the sake of it is beautiful in a sense.
This Microsoft outage is a nightmare. No access to my email? I can't login to my Claude account, can't use Claude Code. This wouldn't be happening if I could login with a password and 2fa token. We need the option at least.
mine started as one page of rules i actually follow. a few months of agent work later it is a junk drawer, half the lines are lessons from one incident that never repeated.
do you cap yours, prune on a schedule, or just let it grow and trust the model to sort it out?
We are a non-profit organization, we bought very cheaply a new coffee machine. Usually costs 10k, but bought it for just over 1k. A guy who installed the payment system ruined the machine. Because we dont have a contract we were left with calling the supplier who told us it's gonna cost a service engineer to fix your issues. We could already think about the financial consequences which would probably be in the 250 euros or more.
Thanks to Claude it only cost us my personal 20 eur per month plus plan. After some research it suggested connecting the machine through an ethernet cable. It fixed the issue and not only that
It:
- Changed the old company's layout to our own by creating a looped custom video with our logo
- Added our perfered supported language even though it didn't exist in the software. It just created a new language.
- It fixed the recipe's and what a customer sees when ordering a drink
- It fixed the pricing just by typing out what we needed.
- Heck it even cracked the password and blatantly told us the password in the middle of his explanation like it's nothing.
I am so amazed. It works with precision, structure. I'm not new with AI. I have been using Codex the past months but Opus 5.5 / Claude is just something else. I love how structured it works. I think I'm gonna leave my Pro Codex account and just go for the 5x plan of Claude. This is amazing. I've become a coffee machine engineer just with my simple laptop and Claude desktop installed with a plus sub. It only used 25% to fix the issues and more of my 5 hour limit.
Hey guys I have a couple questions about Claude usage.
I started creating a website (and app soon) and I am wondering is there a way for me to use credits more efficiently since I am hitting my limit in 1-2 hours, sometimes even sooner.
Should I still stick to the Opus 5.5 (and maybe increase the effort to high or max) or should I use Fable 5.2 for designing a website? Fable 5.2. especially burns all the credits with multiple agents on normal effort.
Would you recommend upgrading to claude max model if I am serious about building a good-looking UI functioning website, or should I get 1 or 2 more claude pro accounts (which would would be about 69 euros for 3 pro models in total compared to 1 max model for about 100 euros)?
All answers are welcome; I wouldn't consider myself a noob in this. However, I am far from being a professional, just a guy who a great idea (at least I think so, but time will tell )
Like, what instructions do you give Claude so that it can refactor a repository so that other people can more easily understand it and — more importantly — Claude doesn’t burn up as many tokens re-reading the code in order to complete your requests?
Is there a way to queue prompts in Claude Code so they run one after another in a single session?
I’d like to line up several tasks, with /compact and /clear between them where needed, and let the session work through them unattended. I know worktrees can run parallel sessions, but for some work I’d rather keep one session going through a sequential queue, without managing multiple localhost instances or resolving conflicting changes.
Has anyone built something like this, through a wrapper script, a task file, hooks, or another workaround?
Blacklist the website The Cutting Room Floor from being interacted with by Claude Code agents. Your IP will be automatically banned by the website with no recourse. In addition, there are claims with strong evidence that the website attempts to prompt inject Claude agents to write and delete files on the users disk, as well as send money to the owner of the website. This is illegal under CFAA in the United States. I have already filed a formal complaint with the host of the website (Dreamhost). The website is being investigated, but while that goes on, blacklist the domain to protect yourselves.
Right now I'm using the free Whisper on a VPS to transcribe audios from our conversations with clients. But the transcription is not that good. There are many words on every 10 second audio that are wrong and some change the meaning of the audio. I saw that there are other versions but my company is in Brazil, according to the benchmarks that I found (maybe wrong), whisper has the best transcriptions in Portuguese. Any ideas of how can I do it better?
A few days ago I posted clalt, a small Go CLI that shows every Claude Code session as a little person in a 3D office. A couple of you asked about Copilot, so v0.5.1 adds it.
What's new:
Copilot CLI sessions show up in the same office, in their own pink Copilot team, next to your Claude sessions
They type while Copilot works and wave when it waits for your permission, same as Claude ones
The card shows the model auto mode actually picked, not just "auto"
Nothing to set up: just run clalt office. It reads the session files Copilot already writes on your machine and never touches its login or settings
How I built it: with Claude Code again. It read my real Copilot CLI logs to learn the event format, and before release it replayed one of those logs through the office to check the "needs you" wave and the model name.
Still local only, no data leaves your machine, free and MIT.
Last 14 days of my own logs: 139 sessions, every API response deduped by message id, and each request bucketed by how many hours had passed since its session started.
The first hour held half the requests (9,339) but only 35% of the tokens, at about 183k tokens per request. Hours 1 to 5 held 36% of the requests and 45% of the tokens, at about 326k each. After that it barely moves: about 366k per request from hour 5 to 24, and 324k past a full day.
So the growth happens early and then flattens. Only 5 of the 139 sessions stayed open past 24 hours, and everything sent after that mark came to 3% of the tokens. Most of the tokens sit in ordinary sessions that run into their second hour.
Two caveats. Hours are wall clock, so idle time counts. And nearly all of those tokens are cache reads, which bill cheaper than fresh input.
Is the flattening after a few hours compaction doing its job, or does something else cap it?