
adrianco/the-goodies
Developer toolsこのページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。 原文を見る
スマートホームナレッジグラフ配布MCP Swift iOSとPythonバックエンドのライブラリ
概要
グッズは、部屋、デバイス、マニュアル、写真、自動化、グラフなど、あらゆる場所から、AIのエージェントに役立てています。 典型的なスマートホームのデータストアと異なる2つの事柄が同じ決定から来る: ほとんどのホームオートメーションストアは「このサーモスタットはどこにありますか?」と答えていますか? グッズは3月に「どこにいたのか」と答えるために作られていますか? エンティティティは不変なバージョンの行であり、エッジは開始と終了の間隔行です。そのため、デバイスを別の部屋に移動すると、それを破壊するのではなく履歴を追加します。 過去の質問は、考古学プロジェクトではなく、クエリです。 クライアントはグラフ全体を保持し、オフラインで便利な状態を維持します。 それらが同じことを編集すると、サーバーが仲裁し、失われた書き込みが保存されます。バージョン行として保存され、承認され、回復可能。 同時記法は、著名性を失う可能性があります。それは決して存在を失うことができません。 それを仮定するのではなく、彼らは実際に同意して確認します.
概要(AI 翻訳)
まで
グッズは、部屋、デバイス、マニュアル、写真、自動化など、どんな家isを格納しています。 グラフとして、Model Context Protocol (MCP) 上でAIエージェントに役立てます。
典型的なスマートホームのデータストアと異なる2つのこと 同じ決断から:nothingは決して過度です。
思い出します。 ほとんどのホームオートメーションストアは「このサーモスタットはどこにありますか?」と答えていますか? グッズは3月に「どこにいたのか」と答えるために作られていますか? 必見です。 バージョン行とエッジは、interval 行で開始と終了です。 別の部屋にデバイスは、それを破壊するのではなく、歴史を追加します。 お問い合わせ 過去は、考古学プロジェクトではなく、クエリです。
書き込みを失うことなく複製します。 クライアントはグラフ全体を保持し、滞在 便利なオフライン。 それらが同じことを編集するとき、サーバーは、 失われる書き込みは kept — バージョン行として保存され、承認され、 回復可能。 同時記法は、著名性を失う可能性があります。それは決して存在を失うことができません。 それを仮定するのではなく、彼らは実際に同意して確認します。
設計は下書きされます:データストア、
このページは 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/healthand/api/v1/auth/*are public. Configure it withfunkygibbon 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.
インストール
This server does not publish a one-line install command.
Open the repository installation guide MCP 初心者?mcpskill.org のガイドから始めましょう →