No description
  • Go 80.1%
  • Dart 14.2%
  • HTML 1.7%
  • Nix 1.3%
  • PLpgSQL 0.6%
  • Other 1.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Bradley Nelson 053073f011
Some checks failed
release / changes (push) Successful in 6s
pages / changes (push) Successful in 24s
build / proto (push) Successful in 34s
build / go-build (push) Successful in 3m44s
build / lint (push) Failing after 4m11s
build / codegen-drift (push) Successful in 5m39s
pages / build (push) Successful in 5m18s
flutter / analyze-test (push) Successful in 6m50s
nix / nix-build (push) Successful in 9m12s
release / publish (push) Successful in 8m57s
test / go-tests (push) Failing after 13m49s
tendant: integrate the audit fixes (messaging tests expect honest fail-close; vendorHash)
- The durable-messaging tests asserted that an agent completes normally after
  a failed, rejected or lost tool call. With the runner now handing such a
  completion to the owner (action_failed / action_rejected), the stage still
  ends instead of waiting — which is what those tests guard — but with the
  fail-close reason; awaitAgentStage takes the expected outcome per test.
- vendorHash recomputed for tendant and openPRM (packages/core gained
  durable/retry.go).
2026-10-07 20:30:38 -06:00
.claude/skills gemma4:12b is the local-model default everywhere 2026-10-04 17:24:44 -06:00
.forgejo/workflows desktop: Nix-packaged Linux GTK clients for tendant + openPRM 2026-10-04 14:18:26 -06:00
.zellij openprm capture logic 2026-06-28 17:55:58 -06:00
apps tendant: integrate the audit fixes (messaging tests expect honest fail-close; vendorHash) 2026-10-07 20:30:38 -06:00
docs tendant: category bindings fail closed to the human 2026-10-04 20:24:04 -06:00
nix Merge branch 'main' into worktree-agent-a420ab1c306fbf827 2026-10-04 19:52:29 -06:00
packages tendant: workflow resilience — transient step retries, dead-firing recovery, checkpointed agent path 2026-10-07 19:55:35 -06:00
platform gemma4:12b is the local-model default everywhere 2026-10-04 17:24:44 -06:00
scripts ci(connect): buf lint, breaking and stub-drift checks for the wire contract 2026-09-30 22:20:11 -06:00
.dockerignore ci: replace the Woodpecker pipelines with Forgejo Actions workflows 2026-08-02 11:05:58 -06:00
.envrc Phase 0: monorepo skeleton 2026-06-23 19:24:50 -06:00
.gitignore zellij DRY 2026-06-28 11:06:24 -06:00
AGENTS.md tendant: task decomposition, agent task tools, restart-safe workflows on DBOS v1.6 2026-10-07 18:36:48 -06:00
CONTRIBUTING.md gemma4:12b is the local-model default everywhere 2026-10-04 17:24:44 -06:00
devenv.nix tendant: daily-driver Linux desktop client 2026-10-04 13:41:49 -06:00
flake.lock nix: bump nixpkgs; desktop apps on host GPU drivers via nixpkgs-desktop 2026-10-04 18:49:44 -06:00
flake.nix tendant: integrate the audit fixes (messaging tests expect honest fail-close; vendorHash) 2026-10-07 20:30:38 -06:00
go.work remote tandant benchmarking 2026-07-02 17:04:50 -06:00
go.work.sum tendant: task decomposition, agent task tools, restart-safe workflows on DBOS v1.6 2026-10-07 18:36:48 -06:00
justfile devenv: on-demand Laya decision server (just laya) 2026-10-04 12:32:25 -06:00
LICENSE Phase 0: monorepo skeleton 2026-06-23 19:24:50 -06:00
pubspec.lock nix: bump nixpkgs; desktop apps on host GPU drivers via nixpkgs-desktop 2026-10-04 18:49:44 -06:00
pubspec.yaml server url config 2026-06-25 01:17:28 -06:00
README.md docs: serve homefirst.dev from whiskey instead of Codeberg Pages 2026-08-02 11:06:08 -06:00
VERSION version: 2026.10 2026-10-04 15:54:25 -06:00

Home First

Software that runs on a server in your own home — not someone else's cloud.

Home First is a family of self-hosted apps for people who want the convenience of modern software without handing their personal data to a third party. You run it on hardware you control, your data stays on disk you own, and nothing leaves the house unless you decide it should.

This repository (homefirst) is the monorepo that holds those apps and the code they share.

The apps

App What it is
tendant A single-household task orchestrator. It watches the sources you connect (email, calendars, and more), figures out what actually needs doing, and keeps your household's tasks in one place.
openPRM A personal relationship manager (CRM). Throw unstructured notes about the people in your life at it and it files them into clean, time-stamped, fully-sourced facts you can query later.

Each app is a single Go binary plus a Postgres database, with a Flutter app for the people who use it. Pick the one you want — they run independently.

What "Home First" means

  • Your hardware, your data. Everything runs on a machine in your home. There's no account to sign up for and no usage being sold.
  • Private by design. The apps are built so that information only reaches an outside service (an LLM, say) when you've explicitly chosen to let it.
  • Open source. Licensed under AGPL-3.0 (see LICENSE) and developed in the open at git.bcnelson.dev/home-first/homefirst, with a read-only mirror on Codeberg.

There's also an optional hosted companion, homefirst.cloud, that handles things a home server can't do well on its own (like reliable push notifications). It's strictly optional and lives in a separate repo; the apps here run fully without it.

Running it yourself & contributing

Want to build it, run it locally, or contribute? Everything technical — the toolchain, how the monorepo is laid out, and how to get each app running on your machine — is in CONTRIBUTING.md.

License

AGPL-3.0. See LICENSE.