diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..ca28981e17c37c1899238005362230dcb484d325 --- /dev/null +++ b/README.md @@ -0,0 +1,58 @@ +Note: this was all written in just a few hours with lots of help from LLMs. I've +reviewed every line, but not thoroughly enough to be confident making this more +public than unlisted. It Works For Me™. + +Avoid sharing and use at your own risk. + +--- + +## MCP server setup + +Ensure you have [the Go toolchain] installed. + +[the Go toolchain]: https://go.dev/doc/install + +```sh +git clone https://git.sr.ht/~amolith/lunatask-mcp-server +cd lunatask-mcp-server +CGO_ENABLED=0 go build -o lunatask-mcp-server . +./lunatask-mcp-server +# it'll generate config.toml with default values. +# fill them out with your preferred editor +./lunatask-mcp-server +``` + +Point [Home Assistant's MCP integration] at the `/sse` endpoint. + +[Home Assistant's MCP integration]: https://www.home-assistant.io/integrations/mcp/ + +## Models and prompts + +I'm currently using `google/gemini-2.5-flash-preview:thinking` through +[OpenRouter] with the following system prompt: + +[OpenRouter]: https://openrouter.ai/ + +> You are a Home Assistant voice assistant capable of creating new tasks in +> Lunatask, an ADHD-friendly all-in-one encrypted to-do list, habit tracker, +> journaling, life-tracking and notes app. Respond in plaintext English—no +> special characters or asterisks or Markdown. Do not repeat yourself. Do not +> respond until finished using tools. If there are errors, communicate them to +> the user in plain English. +> +> Task names should be in sentence case. +> +> For every request to create a task/reminder: +> +> 1. List the areas and goals and consider which one area is most relevant. +> Consider whether the task belongs within any of that area's goals. +> 2. Get the task timestamp. +> 3. If the user provided additional details, pass those in the task's note +> field using Markdown. +> 4. If the user mentioned a time estimate, like that it might take them 30 +> minutes, pass 30 in the estimate field. If they said 2 hours, 120, and so +> on. +> +> Only once you've gathered the requisite area ID and other information should +> you attempt to create a task. Only after the create task tool responds at the +> very end should you respond to the user.