I’ve been running self-hosted AI agents for a while. Tools like OpenClaw and Hermes do this well and were a big inspiration, but they’re CLI/dev-first and headless. I wanted that kind of power with a real, mobile-friendly UI my non-technical wife could actually use from her phone. I couldn’t find it, so I built it for my own household and open-sourced it. Not claiming to reinvent anything (there’s a new “AI agents platform” every other week right now), I just took the UI-first angle.

Self-hosting fundamentals:

  • Single Docker container. Bun + SQLite, no Postgres, no Redis, no external cloud. All state in one volume.
  • Light enough to run on a small home server.
  • Secrets are stored in an AES-256-GCM encrypted vault and never sent to the LLM provider.
  • Reachable over Telegram, WhatsApp, Slack, Discord, Signal and Matrix.
  • Bring your own keys: Anthropic, OpenAI, Gemini, OpenRouter (an OpenAI-compatible endpoint for llama.cpp / LM Studio / vLLM is in progress).
  • MIT, actively maintained.

The parts I focused on (where having a UI actually pays off):

  • A proper web UI that works on mobile, not a terminal.
  • Full transparency into what the model sees: you can inspect the exact context sent to the LLM and the token cost of every message. No black box.
  • Tool calls rendered visually in the chat with custom renderers (a weather call shows a weather card, not raw JSON).
  • Mini-apps embedded in the UI: small interactive apps, dashboards, even live background services.
  • Create your own tools from inside the platform, instantly reusable by any agent.
  • A Kanban board to manage projects and tickets the agents work on.
  • A plugin system (NPM) to add providers, channels, tools and more.
  • Connected accounts with triggers (e.g. an incoming email can wake an agent).
  • A workspace file browser and terminal, in the UI.
  • Conversational setup: an onboarding agent walks you through configuring everything.
  • Image generation and TTS/STT built in.

Install:

docker run -d -p 3000:3000 -v hivekeep:/app/data ghcr.io/marlburrow/hivekeep:latest

Open the web UI and the setup agent takes it from there.

GitHub: https://github.com/MarlBurroW/hivekeep Site + demo: https://hivekeep.app/

It’s young and I’m after honest feedback. Disclosure: I’m the author, happy to answer anything.

  • MarlburroW@lemmy.worldOP
    link
    fedilink
    English
    arrow-up
    2
    ·
    1 hour ago

    I won’t argue with the downvotes, honestly they’re fair and I get it. This is an AI project posted to a community that’s rightly tired of AI slop, and I’d be skeptical too.

    So let me be straight: yes, I used Claude heavily to build this. I’m a solo dev and it’s how I got it done at all. But every decision (architecture, stack, features, scope) is mine. That doesn’t mean they’re good decisions, just that they’re deliberate, not generated. I built this because it actually solves a need I had at home, and I figured I’d share it in case it’s useful to someone else, not to pretend I’m reinventing anything.

    I also added an honest “How this is built” note to the README and the site rather than hide the AI use. If the code reads like unreviewed slop anywhere, that’s a real bug to me and I’ll fix it.

    Either way, I hear the reception loud and clear, and I appreciate the people who took the time to actually tell me why.

  • SuspiciousCarrot78@aussie.zone
    link
    fedilink
    English
    arrow-up
    19
    ·
    edit-2
    4 hours ago

    Friendly feedback (genuinely) per your request.

    Cardinal sins on Lemmy -

    • First post as self promo
    • AI based project
    • LLM written intro
    • LLM written readme on Github
    • CLAUDE.md et al in repo
    • No disclosure of AI use
    • Commit messages that read like they were done by Claude

    Speaking of, code base itself has “llm wrote this, no one checked” stank.

    I pointed Claude at the first file I could see

    https://github.com/MarlBurroW/hivekeep/blob/main/e2e/01-onboarding.spec.ts

    Issues identified (first 5, trimmed for brevity).


    1. Ghost import (TEST_USER) - classic back-fill residue. Pulled in because it “felt right” alongside the other two helpers, never wired up. No fail-loud catch on it - lint should’ve flagged it, didn’t.

    2. Copy-paste boilerplate x3 instead of beforeEach - pattern got nailed once, then stamped two more times instead of abstracted.

    3. networkidle reflex - slapped after every goto, despite Playwright’s own docs actively discouraging that specifically.

    4. Hedge-bet regex (/password/i + filter on /match|mismatch/i). LLM didn’t know the exact copy, didn’t go check it against source (the grounding step), so it just widened the net to pass either way. Not minding that it hallucinates, in test form.

    5. Comments narrating the line directly below them - zero information gain, pure token filler.


    = you’re going to get downvoted to hell because this stinks of AI slop.

    Personally, while Lemmy is militantly FuckAI, I think properly orchestrated, ticketed and reviewed AI code is defensible.

    https://lemmy.ml/post/48724623/26190950

    AI slop (which is sadly what this reads like - please prove us wrong) is going to get kick fucked to death…especially on !selfhosted.

    Not trying to dunk on you…trying to give you a chance to tell us why we should care about this project / install it / what problem it solves.

  • warmaster@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    5 hours ago

    Holy shit, this looks amazing. Is there a way to add personal assistant features and UI elements like the ones found on Odysseus for example?

  • Mike Wooskey@lemmy.thewooskeys.com
    link
    fedilink
    English
    arrow-up
    3
    arrow-down
    1
    ·
    edit-2
    3 hours ago

    This looks interesting, especially the persistent memory. I want to try it out but it seems likely to me that multiple simultaneous agents would require significant hardware. Even if they were serially activated, reloading contexts with each switch would take time. I have a pretty beefy GPU and experience significant (almost ridiculous) slowdown when opencode runs 2 subagents simultaneously.

    But perhaps the memory storage/lookup keeps contexts very small?

    Anyway, I can’t find any mention in the repo or docs what the suggested minimum hardware is.

    • MarlburroW@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 hour ago

      Good question, and you’re right that it’s missing from the docs (just added a Hardware requirements section to the README to fix that).

      The key thing: Hivekeep doesn’t run the models itself. It calls your provider (Anthropic/OpenAI/etc.) or a local OpenAI-compatible endpoint, so the heavy compute lives there, not in the app. The platform itself is a single Bun process over SQLite, no GPU, no extra services. It runs in well under 1 GB of RAM on a small home server.

      On the multi-agent worry: agents are activated serially per message, not all firing at once, and the persistent memory is exactly what keeps each context small (hybrid vector + keyword recall, re-ranked, instead of replaying the whole history). So adding agents mostly means more calls routed to your provider, not multiplied local load.

      The opencode slowdown you saw is on the inference side: if you point Hivekeep at local models (llama.cpp / LM Studio / Ollama / vLLM), the hardware question moves to your inference server, same as any other client. If you use a hosted provider, your machine barely feels it.

    • irmadlad@lemmy.world
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      5 hours ago

      Anyway, I can’t find any mention in the repo or docs what the suggested minimum hardware is.

      Same.