AT

adrianco/the-goodies

开发工具

本页由 AI 翻译,技术细节请以原文为准。 查看原文

23 stars 4 forks 质量 70 趋势 31Apache-2.0

Smart Home 知识图谱分布式 MCP 库,适用于 Swift iOS 和 Python 后端

概览

The Goodies 将房屋的具体内容——房间、设备、手册、照片、自动化——存储为图表,并通过 AI 代理提供。 它与典型智能家居数据存储有两个不同之处,这两者都源自同一个决策: 大多数家居自动化商店的答案是“这个恒温器在哪里?”The Goodies 的设计就是为了回答“它三月在哪里?”实体是不可变的版本行,边是带有起点和结束的间隔行——因此将设备移到另一个房间,是增加历史,而非毁掉它。关于过去的问题是一个查询,而不是考古项目。 客户端持有整个图,离线时依然有用。当两个客户端编辑相同内容时,服务器进行仲裁,丢失的写入会被保留——作为版本行存储,确认并可恢复。并发写写可能会失去显著性;但它永远不会消失。副本随后验证它们确实同意,而不是假设如此。

概述(AI 翻译)

🏠 概述

The Goodies 存储了房子本质——房间、设备、手册、照片、自动化—— 作为一个图,并通过**模型上下文协议(MCP)**向AI代理提供。

它有两个不同于典型智能家居数据存储的特点,而且这两者都具备 同一个判决:没有任何内容被覆盖。

**它会记住。**大多数家居自动化店的回答是“这个恒温器在哪里?” 好家伙的存在就是为了回答“它三月在哪里?”实体是不可改变的 版本行和边是区间行,有起点和结束——所以移动 设备转移到另一个房间,是增加历史而不是毁掉它。关于的一个问题 过去是一个询问,而非考古项目。

**它复制时不会丢失写入次数。**客户端持有整个图并保持不动 离线时很有用。当两个人编辑同一个内容时,服务器会进行仲裁,并且 丢失的写入被保留——存储为版本行,已确认,且 可恢复。并发写可以失去显著性;但它永远不会失去存在感。 复制品随后核实他们确实同意,而不是假设。

设计内容如下:覆盖数据存储的23个ADR,

本页由 AI 翻译,技术细节请以原文为准。

README

以下为原文 README 节选,完整内容请查看原文。

The Goodies — a temporal, replicated knowledge graph for a house

🏠 Overview

The Goodies stores what a house is — rooms, devices, manuals, photos, automations — as a graph, and serves it to AI agents over the Model Context Protocol (MCP).

Two things make it different from a typical smart-home data store, and both come from the same decision: nothing is ever overwritten.

It remembers. Most home-automation stores answer “where is this thermostat?” The Goodies is built to answer “where was it in March?” Entities are immutable version rows, and edges are interval rows with a start and an end — so moving a device to another room adds history rather than destroying it. A question about the past is a query, not an archaeology project.

It replicates without losing writes. Clients hold the whole graph and stay useful offline. When two of them edit the same thing, the server arbitrates, and the write that loses is kept — stored as a version row, acknowledged, and recoverable. A concurrent write can lose prominence; it can never lose existence. Replicas then verify they actually agree, rather than assuming it.

The design is written down: 23 ADRs covering the datastore, the temporal model, the sync protocol, and the domain abstraction, each with the alternatives that were rejected and why.

Current status: installed and running in a real house since March 2026, with a second install at another house. Authenticated data endpoints, a protocol-correct sync engine (see inbetweenies/PROTOCOL.md), MCP tools (18 engine tools plus each domain’s own — 23 for the house), backup/restore, and data-migration + upgrade tooling. The Python blowing-off client also runs as an MCP server, mirroring the TypeScript port (KittenKong). CI runs the test suites on Linux and macOS across Python 3.11–3.14. Latest release: v0.6.0 — inbetweenies-v3, the temporal cutover described below, with MCP as the only client interface (ADR-015).

⚠️ Authentication is enforced: every data endpoint (/graph, /mcp, /sync, /sync-metadata, /backup) requires a bearer token. Only /health and /api/v1/auth/* are public. Configure it with funkygibbon setup-auth.

Related Projects: adrianco/consciousness is an early prototype of the backend server that will be rewritten from scratch later. adrianco/c11s-house-ios is a native Swift iOS app that is the front end for the system. This repo is the knowledge graph protocol that interfaces the app to the backend, and includes the Blowing-Off Python client (a reference implementation, and now also an MCP server). The maintained port of the client is KittenKong (TypeScript, adrianco/the-goodies-typescript). An earlier Swift port (adrianco/the-goodies-swift / WildThing) is untested and has been abandoned.

在 GitHub 查看完整 README

安装

This server does not publish a one-line install command.

Open the repository installation guide 新手?先看 mcpskill.org 教程 →