443 karma · joined November 2, 2024
I did my best to communicate this but I guess it was still missed:
NanoClaw is not software that you should run out of the box. It is designed as a sort of framework that gives a solid foundation for you to build your own custom version.
The idea is not that you toggle on a bunch of features and run it. You should customize, review, and make sure that the code does what you want.
So you should not trust the coding agents that they didn't break the security model while adding discord. But after discord is added, you review the code changes and verify that it's correct. And because even after adding discord you still only have 2-3k loc, it's actually something you can realistically do.
Additionally, the skills were originally a bit ad-hoc. Now they are full working, tested and reviewed reference implementations. Code is separate from markdown files. When adding a new integration or messaging channel, the agent uses `git merge` to merge the changes in, rather than rewriting from scratch. Adding the first channel is fully deterministic. The agent only resolves merge conflicts if there are any.
This makes it really difficult to understand what's real and what's hype. It feels like everything that's trending is BS because of the obvious boosting and exaggeration.
But there are real, noteworthy things that are happening and they get mixed in with a lot of BS.
Coding agents being massive amplifiers of skilled developers productivity is not hype. There are countless 10s or maybe 100s of thousands of developers who have built things that they simply wouldn't have been able to do a few years ago. It doesn't matter what that MITRE study says if you've built something with your own hands that wouldn't have existed without AI.
Bringing the same coding agents to regular people on WhatsApp and Telegram, and connecting it with enough apps and data sources so it can do valuable work is a massive unlock of value. There is massive hype around it, but underneath all the hype there is something big and real. I am getting immense value from this. I recommend that you put your skepticism on hold for a short time and give it a real try. Real is key. If you go in trying to prove your skepticism right, you will be able to do that. But if you approach with curiosity you'll undoubtedly discover ways you can start extracting value from it
CLAUDE.local.md is deprecated but I'm sure anthropic will continue supporting it for a long time.
This is describing the structure of an Obsidian vault that is mounted in the container as an additional directory that claude has access to. Me and my co-founder chat with NanoClaw in WhatsApp and get daily briefings on sales pipeline status, get reminders on tasks, give it updates after calls, etc.
You can see that I described the same vault structure on twitter a few days before starting to build NanoClaw: https://x.com/Gavriel_Cohen/status/2016572489850065016?s=20
I accidentally committed this - if you look at the .gitignore (https://github.com/qwibitai/nanoclaw/blob/main/.gitignore) you can see that this specific file is included although the folder it's in is excluded. There's some weirdness here because the CLAUDE.md is a core part of the project code that gives claude general context about the memory system, but is then also updated per user.
Interesting tidbit is that adding instructions for this specific thing (additional directory claude is give access to) is no longer necessary because claude now automatically loads the CLAUDE.md from the added directory.
If I want to add additional capabilities for myself, I'll contribute them to the project as skills for claude code to modify the code base, rather than directly to the source. I actually want to reduce the size of the base implementation and have a PR open to strip out 300-400 LOC
1. Usage is not automated and unattended - it only responds to messages that are sent to it with a specific prefix "Andy:"
2. This is not a bot service. It is not crawling twitter and responding to posts. Hard to see how sending it messages through WhatsApp is any different than through ssh via the terminal
3. I don't think a custom piece of software running on my computer that pipes data from a program into the Agents SDK is a third party "platform" integration.
How is this different from running Agents SDK as part of a CI process?
This project uses the Agents SDK so it should be kosher in regards to terms of service. I couldn't figure out how to get the SDK running inside the containers to properly use the authenticated session from the host machine so I went with a hacky way of injecting the oauth token into the container environment. It still should be above board for TOS but it's the one security flaw that I know about (malicious person in a WhatsApp group with you can prompt inject the agent to share the oauth key).
If anyone can help out with getting the authenticated session to work properly with the agents running in containers it would be much appreciated.
I don't make any attempt to hide it. Nearly every commit message says "Co-Authored-By: Claude Opus 4.5". You correctly pointed out that there were some AI smells in the writing, so I removed them, just like I correct typos, and the writing is now better.
I don't care deeply about this code. It's not a masterpiece. It's functional code that is very useful to me. I'm sharing it because I think it can be useful to other people. Not as production code but as a reference or starting point they can use to build (collaboratively with claude code) functional custom software for themselves.
I spent a weekend giving instructions to coding agents to build this. I put time and effort into the architecture, especially in relation to security. I chose to post while it's still rough because I need to close out my work on it for now - can't keep going down this rabbit hole the whole week :) I hope it will be useful to others.
BTW, I know the readme irked you but if you read it I promise it will make a lot more sense where this project is coming from ;)
If it somehow wasn't abundantly clear: this is a vibe coded weekend project by a single developer (me).
It's rough around the edges but it fits my needs (talking with claude code that's mounted on my obsidian vault and easily scheduling cron jobs through whatsapp). And I feel a lot better running this than a +350k LOC project that I can't even begin to wrap my head around how it works.
This is not supposed to be something other people run as is, but hopefully a solid starting point for creating your own custom setup.
This is by far the most frustrating part of building with LLMs. Is there any good solution out there for any framework?