[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80821":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":14,"stars30d":12,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":15,"rankGlobal":9,"rankLanguage":9,"license":16,"archived":17,"fork":17,"defaultBranch":18,"hasWiki":19,"hasPages":17,"topics":20,"createdAt":9,"pushedAt":9,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":14,"starSnapshotCount":14,"syncStatus":24,"lastSyncTime":25,"discoverSource":26},80821,"dreamer","luml-ai\u002Fdreamer","luml-ai","Self-evolving context for any coding agent.",null,"Python",38,1,3,0,0.9,"MIT License",false,"main",true,[],"2026-06-12 02:04:07","\u003Ch1 align=\"center\">Dreamer - self-evolving context for your coding agents\u003C\u002Fh1>\n\u003C!--\u003Cp align=\"center\">\u003Cem>Self-evolving context for your coding agents.\u003C\u002Fem>\u003C\u002Fp>-->\n\n\u003Cpicture>\n  \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fgist.githubusercontent.com\u002FOKUA1\u002F18d426c57df26e5b1e99727a3aca643d\u002Fraw\u002Fb2a312ad81c6b3fa05d1793a571b71e2de1feb5a\u002Fdreamer-light.svg\" >\n  \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fgist.githubusercontent.com\u002FOKUA1\u002F18d426c57df26e5b1e99727a3aca643d\u002Fraw\u002Fb2a312ad81c6b3fa05d1793a571b71e2de1feb5a\u002Fdreamer-dark.svg\">\n  \u003Cimg alt=\"Image\" src=\"https:\u002F\u002Fgist.githubusercontent.com\u002FOKUA1\u002F18d426c57df26e5b1e99727a3aca643d\u002Fraw\u002Fb2a312ad81c6b3fa05d1793a571b71e2de1feb5a\u002Fdreamer-light.svg\">\n\u003C\u002Fpicture>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"#get-started\">Get started\u003C\u002Fa> ·\n  \u003Ca href=\"#extensions\">Extensions\u003C\u002Fa> ·\n  \u003Ca href=\"https:\u002F\u002Fluml.ai\u002Fblog\u002F2026\u002Fdreamer-self-evolving-agents\">Blogpost\u003C\u002Fa>\n\u003C\u002Fp>\n\nDreamer keeps your team's `AGENTS.md` and skills up to date with what your\ncoding agents learn while they work. It runs as a self-hostable MCP server\nthat collects memories from every agent on the team and, on a schedule,\nregenerates the context bundle the next session reads.\n\n**Team-wide memory.** Memories from every agent on the team pool into a\nsingle store and feed a single context bundle, instead of staying on one\nworkstation.\n\n**Any coding CLI.** Anything that speaks MCP submits memories through the\nsame `submit_memory` tool, including Claude Code, Cursor, Codex, and custom\nagents.\n\n**Extendible by config.** STM store, LTM store, context store, dream engine,\nauth, triggers, and hooks are Python `Protocol`s wired up from YAML. Swap\nany default by pointing at a different class.\n\n\n\u003Cpicture>\n  \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fgithub.com\u002FDataforce-Solutions\u002Fstatic_assets\u002Fblob\u002Fmain\u002FCTA-Compact-Light.png?raw=true\" >\n  \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fgithub.com\u002FDataforce-Solutions\u002Fstatic_assets\u002Fblob\u002Fmain\u002FCTA-Compact-Dark.png?raw=true\">\n  \u003Cimg alt=\"Image\" src=\"https:\u002F\u002Fgithub.com\u002FDataforce-Solutions\u002Fstatic_assets\u002Fblob\u002Fmain\u002FCTA-Compact-Light.png?raw=true\">\n\u003C\u002Fpicture>\n\n\u003Chr>\nDreamer is part of the broader \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fluml-ai\u002Fluml\">LUML\u003C\u002Fa> effort to build open infrastructure for autonomous ML agents. \u003Cbr\u002F>\u003Cbr\u002F>\n\n\n\u003Cdiv align=\"center\">\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fluml-ai\u002Fluml\">\u003Cpicture>\u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fgist\u002FOKUA1\u002Fbae081e15b6efae41cc42c7f88c8c2a2\u002Fraw\u002F8e82db4bbba01f768176560ce6f039113ebd3d30\u002Fcore.svg\">\u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fgist.githubusercontent.com\u002FOKUA1\u002Fbae081e15b6efae41cc42c7f88c8c2a2\u002Fraw\u002Fe2f73a24d9b77decd84d045ec28955fd3b82dbeb\u002Fcore-dark.svg\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fgist\u002FOKUA1\u002Fbae081e15b6efae41cc42c7f88c8c2a2\u002Fraw\u002F8e82db4bbba01f768176560ce6f039113ebd3d30\u002Fcore.svg\" alt=\"Core — registry, deployments, monitoring\" width=\"270\"\u002F>\u003C\u002Fpicture>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fluml-ai\u002Fluml\">\u003Cpicture>\u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fgist.githubusercontent.com\u002FOKUA1\u002Fbae081e15b6efae41cc42c7f88c8c2a2\u002Fraw\u002F8e82db4bbba01f768176560ce6f039113ebd3d30\u002Fprisma.svg\">\u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fgist.githubusercontent.com\u002FOKUA1\u002Fbae081e15b6efae41cc42c7f88c8c2a2\u002Fraw\u002Fe2f73a24d9b77decd84d045ec28955fd3b82dbeb\u002Fprisma-darkl.svg\">\u003Cimg src=\"https:\u002F\u002Fgist.githubusercontent.com\u002FOKUA1\u002Fbae081e15b6efae41cc42c7f88c8c2a2\u002Fraw\u002F8e82db4bbba01f768176560ce6f039113ebd3d30\u002Fprisma.svg\" alt=\"Prisma — autonomous ML research agents\" width=\"270\"\u002F>\u003C\u002Fpicture>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fluml-ai\u002Fluml\">\u003Cpicture>\u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fgist\u002FOKUA1\u002Fbae081e15b6efae41cc42c7f88c8c2a2\u002Fraw\u002F8e82db4bbba01f768176560ce6f039113ebd3d30\u002Fflow.svg\">\u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fgist.githubusercontent.com\u002FOKUA1\u002Fbae081e15b6efae41cc42c7f88c8c2a2\u002Fraw\u002Fe2f73a24d9b77decd84d045ec28955fd3b82dbeb\u002Fflow-dark.svg\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fgist\u002FOKUA1\u002Fbae081e15b6efae41cc42c7f88c8c2a2\u002Fraw\u002F8e82db4bbba01f768176560ce6f039113ebd3d30\u002Fflow.svg\" alt=\"Flow — experiment tracking and tracing\" width=\"270\"\u002F>\u003C\u002Fpicture>\u003C\u002Fa>\n\n\u003C\u002Fdiv>\n\n## Get started\n\nDreamer requires Python 3.12 or later. The `defaults` extra pulls in SQLite\nfor STM, the Claude Agent SDK for dreaming, APScheduler for cron triggers,\nand gitpython for the post-dream commit hook.\n\n```bash\npip install 'dreamer-server[defaults]'\n```\n\nScaffold a project.\n\n```bash\ndreamer init\n```\n\nThis writes a `dreamer.yaml`, a `workspace\u002F` with `memory\u002F` and `context\u002F`\nsubdirectories, and a `.gitignore` that keeps the SQLite database out of\ngit.\n\nIssue a token for your agents to send in the `Authorization` header.\n\n```bash\ndreamer-simple-auth token create --db .\u002Fdreamer.db --name my-token\n```\n\nSanity-check the config. The loader resolves every component, runs the\nprotocol-conformance check, and prints the wired graph and per-slot\nmulti-tenancy table.\n\n```bash\ndreamer config check\n```\n\nRun the server.\n\n```bash\ndreamer serve\n```\n\nPoint Claude Code or any MCP client over streamable-http at\n`http:\u002F\u002Flocalhost:8080\u002Fmcp\u002F` with `Authorization: Bearer \u003Ctoken>`. The\nserver advertises a `submit_memory` tool whose accepted types come from your\nconfig. Out of the box, those are `observation`, `failure`, and\n`code_snippet`.\n\nCron is the default trigger. To fire a one-shot dream from the command\nline:\n\n```bash\ndreamer dream --trigger external\n```\n\n## Extensions\n\nDreamer is config-assembled. `dreamer.yaml` wires `module.path.ClassName`\nreferences into a component graph. Every slot sits behind a Python\n`Protocol` defined in `dreamer.api`, including the STM store, the LTM\nstore, the context store, the dream engine, auth, triggers, and hooks. The\nshipped defaults are chosen to get a team running in a few minutes, and\nevery one of them can be swapped.\n\n```yaml\nstm_store:\n  class: dreamer.contrib.stm.sqlite.SQLiteSTMStore\n  params:\n    path: .\u002Fdata\u002Fstm.db\n\nltm_store:\n  class: dreamer.contrib.ltm.markdown.MarkdownLTMStore\n  params:\n    root: .\u002Fworkspace\u002Fmemory\n\ncontext_store:\n  class: dreamer.contrib.context.markdown.MarkdownContextStore\n  params:\n    root: .\u002Fworkspace\u002Fcontext\n\ndream_engine:\n  class: dreamer.contrib.dream.claude_agent.ClaudeAgentDreamEngine\n\ntriggers:\n  - class: dreamer.contrib.triggers.cron.CronTrigger\n    params:\n      schedule: \"0 *\u002F6 * * *\"\n```\n\nTo plug in your own component, write a class that satisfies the protocol.\nFor example, a Postgres-backed STM store:\n\n```python\nfrom typing import ClassVar\nfrom dreamer.api.compat import implements\nfrom dreamer.api.stores import STMStore\n\n@implements(STMStore, version=1)\nclass PostgresSTMStore:\n    multi_tenant: ClassVar[bool] = True\n\n    def __init__(self, *, dsn: str) -> None:\n        ...\n\n    async def submit(self, memory, *, ctx): ...\n    async def claim_batch(self, *, ctx): ...\n```\n\nThen reference it from `dreamer.yaml`:\n\n```yaml\nstm_store:\n  class: my_pkg.stores.PostgresSTMStore\n  params:\n    dsn: ${env:POSTGRES_DSN}\n```\n\n`dreamer config check` validates the protocol version, signatures,\nparameter kinds, and capability requirements before the server boots. The\nsame shape of change covers a graph-backed long-term memory store, an OIDC\nauth backend, or a Slack notification hook in place of the git commit.\n\n`dreamer.testing.conformance` ships abstract `pytest` classes for each\nprotocol. The cases cover idempotency, lease isolation, expired-lease\nreclamation, tenant-scope leakage, and the `purge_consumed` contract. Any\ncompliant implementation should pass them.\n\n```python\nfrom dreamer.testing.conformance.stm_store import STMStoreConformance\n\nclass TestPostgresSTMStore(STMStoreConformance):\n    @pytest.fixture\n    async def store(self):\n        return PostgresSTMStore(dsn=\"postgresql:\u002F\u002F...\")\n```\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n\n\n\n","Dreamer 是一个为编码代理提供自我进化上下文的工具。其核心功能包括团队级记忆共享、支持多种编码CLI工具的记忆提交以及通过配置文件扩展的能力，使得STM存储、LTM存储、上下文存储等组件可以灵活替换。它运行于自托管的MCP服务器上，定期更新团队成员使用的上下文包，确保所有开发人员能够基于最新的知识进行工作。适用于希望提高团队协作效率并保持代码库文档同步更新的研发环境。",2,"2026-06-11 04:02:27","CREATED_QUERY"]