Lovely project. Also @rubenvanwyk mentioned SlateDB. I am not sure if this will fit my use-case but, today, I was looking for data hosting options for a self-hosted LLM+bot for email/calendar.
I have this product I have tried and stopped before: https://github.com/pixlie/dwata and I want to restart it. The idea is to create a knowledge graph (use Gliner for NER). Compute would either be on desktop or cloud (instances).
Then store the data on S3 or Cloudflare Workers KV or AWS Dynamo DB and access with cloud functions to hook up to WhatsApp/Telegram bot. I may stick with Dynamo or Cloudflare options eventually though (both have cloud functions support).
I need a persistent storage of key/value data (the graph, maybe embedding) for cloud functions. Completely self-hosted email/calendar bot with LLM, own cloud, own API keys. Super low running cost.
I do not spend $100/month. I spend for 1 Claude Pro subscription and then a (much cheaper) z.ai Coding Plan, which is like one fifth the cost.
I use Claude for all my planning, create task documents and hand over to GLM 4.6. It has been my workhorse as a bootstrapped founder (building nocodo, think Lovable for AI agents).
I have heard about this approach elsewhere too. Could you please provide some more details on the set up steps and usage approach. I would like to replicate. Thanks.
I simply ask Claude Sonnet, using claudecode, to use opencode. That's it! Example:
We need to clean up code lint and format errors across multiple files. Check which files are affected using cargo commands. Please use opencode, a coding agent that is installed. Use `opencode run <prompt>` to pass in a per-file prompt to opencode, wait for it to finish, check and ask again if needed, then move to next file. Do not work on files yourself.
There are a couple of decent approaches to having a planning/reviewer model set (eg. claude, codex, gemini) and an execution model (eg. glm 4.6, flash models, etc) workflow that I've tried. All three of these will let you live in a single coding cli but swap in different models for different tasks easily.
- claude code router - basically allows you to swap in other models using the real claude code cli and set up some triggers for when to use which one (eg. plan mode use real claude, non plan or with keywords use glm)
- opencode - this is what im mostly using now. similar to ccr but i find it a lot more reliable against alt models. thinking tasks go to claude, gemini, codex and lesser execution tasks go to glm 4.6 (on ceberas).
- sub-agent mcp - Another cool way is to use an mcp (or a skill or custom /command) that runs another agent cli for certain tasks. The mcp approach is neat because then your thinker agent like claude can decide when to call the execution agents, when to call in another smart model for a review of it's own thinking, etc instead of it being explicit choice from you. So you end up with the mcp + an AGENTS.md that instructs it to aggressively use the sub-agent mcp when it's a basic execution task, review, ...
I also find that with this setup just being able to tap in an alt model when one is stuck, or get review from an alt model can help keep things unstuck and moving.
RooCode and KiloCode also have an Orchestrator mode that can create sub-tasks and you can specify which model to use for what - and since they report their results back after finishing a task (implement X, fix Y), the context of the more expensive model doesn’t get as polluted. Probably one of the most user friendly ways to do that.
A simpler approach without subtasks would be to just use the smart model for Ask/Plan/whatever mode and the dumb but cheap one for the Code one, so the smart model can review the results as well and suggest improvements or fixes.
I use LLMs to generate almost all my code. Currently at 40K lines of Rust, backend and a desktop app. I am a senior engineer with almost all my tech career (16 years) in startups.
Coding with agents has forced me to generate more tests than we do in most startups, think through more things than we get the time to do in most startups, create more granular tasks and maintain CI/CD (my pipelines are failing and I need to fix them urgently).
These are all good things.
I have started thinking through my patterns to generate unit tests. I was generating mostly integration or end to end tests before. I started using helping functions in API handlers and have unit tests for helpers, bypassing the API level arguments (so not API mocking or framework test to deal with). I started breaking tasks down into smaller units, so I can pass on to a cheaper model.
There are a few patterns in my prompts but nothing that feels out of place. I do not use agents files and no MCPs. All sources here: https://github.com/brainless/nocodo (the product is itself going through a pivot so there is that).
I see that your release is GPL 3.0. Are you worried about LLM's effectively laundering your source code a year from now? I've become hesitant about releasing source code since LLM's, though I do use Claude heavily while programming to make suggestions and look for issues etc.., but I'd be interested in hearing your perspective.
I am using GPL 3.0 mostly from a business standpoint, so that I can sell a commercial license to companies that may want to modify the project. In really LLMs will launder everything they can, I am not sure if that can be stopped. So that affects every project. The reason why LLMs are as good is that they train on all code that is available.
Halfway through I realized where this is going. Could not hold the tears. These are tough choices. My parents are alive, getting older. My dad has fairly serious mental health issues. Life has never been easy in a very dysfunctional family. I stayed away from family for many years. Now, I am 41 and these last few years, I have started to realize that I may not have much time with them.
We are busy people but no matter how we try, we cannot bring people back. We cannot make some things different. I think about that a lot. Even coming from a family of abuse and trauma that needed a decade of counseling and healing, I still feel sad they may not be there much longer.
Thank you for a reminder. Thank you for sharing your personal story.
Same age and while coming not from abuse but from difficult extreme-christian education I am torn between letting my parents have too much say in my life today.
However as you say: I realise that my time with them is going to end and I don’t want them gone.
Wondering how you found a way to spend time with them and if you openly speaking about the limited time left and the past with them?
I’m about the same age as you. I was raised in a strict christian home. For a long time, I thought that was normal. It wasn’t. I didn’t see it clearly until my late thirties, sitting in therapy for depression. That’s when I learned it was abuse.
The best thing my therapist told me was to cut off contact. I did. And I’ve never been happier. I’ve got my own family now. We live with love, not fear. We tell the truth. We don’t play mind games.
If my parents ever want to make peace, they’ll have to admit they were dishonest and tried to control me. But they won’t. They still say they did what they thought was best.
For me, I just look forward to the day I stop thinking about them, or the day I hear they’ve passed.
I realised over the years that many friends of mine went through troublesome experience because of the faith of their parents.
I genuinely believe my parents were A) trapped in a system B) wanted the best for their kids.
Having kids it would break my heart if they would cancel the contact - but at the end if parents can’t admit mistakes maybe as Christian they have not learned humility and asking for forgiveness- alao something is see my parents struggling. I am willing to forgive and forget - but I still see a same extreme conviction that what they do is all correct and they way to live in faith.
PS: Edit - I just saw you wrote: Love not fear! Thats so powerful- fear was the best description of our education as well and I am so sad about this… why did it has to come that far?!
The skills approach is great for agents and LLMs but I feel agents have to become wider in the context they keep and more proactive in the orchestration.
I have been running Claude Code with simple prompts (eg 1) to orchestrate opencode when I do large refactors. I have also tried generating orchestration scripts instead. Like, generate a list of tasks at a high level. Have a script go task by task, create a small task level prompt (use a good model) and pass on the task to agent (with cheaper model). Keeping context low and focused has many benefits. You can use cheaper models for simple, small and well-scoped tasks.
This brings me to skills. In my product, nocodo, I am building a heavier agent which will keep track of a project, past prompts, skills needed and use the right agents for the job. Agents are basically a mix of system prompt and tools. All selected on the fly. User does not even have to generate/maintain skills docs. I can get them generated and maintained with high quality models from existing code in the project or tasks at hand.
1 Example prompt I recently used:
Please read GitHub issue #9. We have phases clearly marked. Analyze the work and codebase. Use opencode, which is a coding agent installed. Check `opencode --help` about how to run a prompt in non-interactive mode. Pass each phase to opencode, one phase at a time. Add extra context you think is needed to get the work done. Wait for opencode to finish, then review the work for the phase. Do not work on the files directly, use opencode
I prefer using LLM. But many people will ask what is an LLM and then I use AI and they get it. Unfortunate.
At the same time, LLMs are not a bullshit generator. They do not know the meaning of what they generate but the output is important to us. It is like saying a cooker knows the egg is being boiled. I care about the egg, cooker can do its job without knowing what an egg is. Still very valuable.
Totally agree with the platform approach. More models should be available to be run own own hardware. At least 3rd party cloud provider hardware. But Chinese models have dominated this now.
ChatGPT may not last long unless they figure out something, given the "code red" situation is already in their company.
I also do not know the meaning of what I generate. Especially applicable to internal states, such as thoughts and emotions, which often become fully comprehensible only after a significant delay - up to a few years. There's even a process dedicated to doing this consistently called journaling.
Frankly, bullshit is the perfect term for it because ChatGPT doesn't know that it's wrong. A bullshit artist isn't someone whose primary goal is to lie. A bullshit artist is someone whose primary goal is to achieve something (a sale, impressing someone, appearing knowledgable, whatever) without regard for the truth. The act of bullshitting isn't the same as the act of lying. You can e.g bullshit your way through a conversation on a technical topic you know nothing about and be correct by happenstance.
Before someone replies and does a fallacious comparison along the lines like: "But humans also do 'bullshitting' as well, humans also 'hallucinate' just like LLMs do".
Except that LLMs have no mechanism for transparent reasoning and also have no idea about what they don't know and will go to great lengths to generate fake citations to convince you that it is correct.
> So why can they respond saying they don't know things?
Because sometimes, the tokens for "I don't know" are the most likely, given the prior context + the RLHF. LLMs can absolutely respond that they don't know something or that they were incorrect about sometimes, but I've only seen that happen after first pointing out that they're wrong, which changes the context window to one where such an admission of fault becomes probable.
I've actually had ChatGPT admit it was wrong by simply asking a question ("how is X achieved with what you described for Y"). It responded with "Oh, it's a great question which highlights how I was wrong: this is what really happens...": but still, it couldn't get there without me understanding the underlying truth (it was about key exchange in a particular protocol that I knew little about, but I know about secure messaging in general), and it would easily confuse less experienced engineers with fully confident sounding explanation.
For things I don't understand deeply, I can only look if it sounds plausible and realistic, but I can't have full trust.
The "language" it uses when it's wrong is still just an extension of the token-completion it does (because that's what text contains in many of the online discussions etc).
That interpretation is too generous, the word "bullshit" is generally a value judgement and implies that you are almost always wrong, even though you might be correct from time to time. Current LLMs are way past that threshold, making them much more dangerous for a certain group of people.
Very happy to see this since I am building in this domain. We need external and internal context though. I am aiming for always available context for current and related projects, reference projects, documentation, library usage, commands available (npm, python,...), tasks, past prompts, etc. all in one product. My product, nocodo (1), is built by coding agents, Claude Code (Sonnet only) and opencode (Grok Code Fast 1 and GLM 4.6).
I just made a video (2) on how I prompt with Claude Code, ask for research from related projects, build context with multiple documents, then converge into a task document, shared that with another coding agent, opencode (with Grok or GLM) and then review with Claude Code.
nocodo is itself a challenge for me: I do not write or review code line by line. I spend most of the time in this higher level context gathering, planning etc. All these techniques will be integrated and available inside nocodo. I do not use MCPs, and nocodo does not have MCPs.
I do not think plugging into existing coding agents work, not how I am building. I think building full-stack is the way, from prompt to deployed software. Consumers will step away from anything other than planning. The coding agent will be more a planning tool. Everything else will slowly vanish.
My experience has been the opposite. I came from Python and Typescript and the initial amount of reading and fighting with the compiler was very frustrating but I understood one thing that sets Rust apart - I write code with almost the same level of bugs as a seasoned Rust developer. That is a win for years to come as team grows and software gets old. I will bet on it again and again.
Now I mostly generate code with coding agents and almost everything I create is Rust based - web backend to desktop app. Let the LLM/agent fight with the compiler.
Location: Kolkata, India
Remote: Yes and willing to travel frequently
Willing to relocate: No
Technologies: Agentic development, Go, Rust, TypeScript, etc. Strongly typed stack only. I do not write code by hand anymore, and I have my own agent. You can hire me to build for you or you can build on top and I consult for you.
Résumé/CV: https://www.linkedin.com/in/brainess, https://brainless.in, https://github.com/brainless
Email: My name, without spaces or any other characters, at Google's consumer email domain
I am Sumit and I am building https://github.com/brainless/nocodo. I have built this only with coding agents. If you are building rapidly with LLMs, I am very interested to work with you. Use LLMs in every stage of your workflow. Strongly typed languages only. I have been an engineer for 16 years, founder many times and have deep knowledge and experience in early stage product building.
Think of it as Devin AI but self-hosted, headless (use my UI or your), customizable, multi-model, multi-OS (build/debug your apps on Win, Mac, Linux). Enforce policies with hooks. Commercial license at $90K/year with support.
I have this product I have tried and stopped before: https://github.com/pixlie/dwata and I want to restart it. The idea is to create a knowledge graph (use Gliner for NER). Compute would either be on desktop or cloud (instances).
Then store the data on S3 or Cloudflare Workers KV or AWS Dynamo DB and access with cloud functions to hook up to WhatsApp/Telegram bot. I may stick with Dynamo or Cloudflare options eventually though (both have cloud functions support).
I need a persistent storage of key/value data (the graph, maybe embedding) for cloud functions. Completely self-hosted email/calendar bot with LLM, own cloud, own API keys. Super low running cost.
reply