{"id":47619431,"url":"https://github.com/vcmf/dim0","last_synced_at":"2026-04-12T00:20:19.785Z","repository":{"id":345963001,"uuid":"1187493898","full_name":"vcmf/dim0","owner":"vcmf","description":"Agent-native thinking canvas for notes, docs, code, widgets, and board-aware AI on one canvas.","archived":false,"fork":false,"pushed_at":"2026-03-31T19:52:03.000Z","size":2238,"stargazers_count":6,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-02T05:53:30.380Z","etag":null,"topics":["ai-agent","canvas","code-execution","fast-api","infinite-canvas","knowledge-graph","mindmap","note-taking","productivity","qdrant","rag","react","research-tool","second-brain","semantic-search","thinking-canvas","whiteboard","widgets"],"latest_commit_sha":null,"homepage":"https://dim0.net","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vcmf.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-20T19:42:54.000Z","updated_at":"2026-03-31T19:52:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/vcmf/dim0","commit_stats":null,"previous_names":["vcmf/dim0"],"tags_count":27,"template":false,"template_full_name":null,"purl":"pkg:github/vcmf/dim0","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vcmf%2Fdim0","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vcmf%2Fdim0/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vcmf%2Fdim0/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vcmf%2Fdim0/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vcmf","download_url":"https://codeload.github.com/vcmf/dim0/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vcmf%2Fdim0/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31416472,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T20:09:54.854Z","status":"ssl_error","status_checked_at":"2026-04-04T20:09:44.350Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agent","canvas","code-execution","fast-api","infinite-canvas","knowledge-graph","mindmap","note-taking","productivity","qdrant","rag","react","research-tool","second-brain","semantic-search","thinking-canvas","whiteboard","widgets"],"created_at":"2026-04-01T21:55:31.790Z","updated_at":"2026-04-04T22:06:04.558Z","avatar_url":"https://github.com/vcmf.png","language":"TypeScript","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/images/dim0-icon.png\" alt=\"Dim0 icon\" width=\"96\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eDim0 - The Thinking Canvas\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  An agent-native canvas where notes, documents, code, widgets, and AI work together on one board.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://dim0.net\"\u003eWebsite\u003c/a\u003e · \u003ca href=\"https://app.dim0.net\"\u003eLive App\u003c/a\u003e · MIT License\n\u003c/p\u003e\n\n![Dim0 app screenshot](docs/images/app-screenshot.png)\n*Canvas workspace: notes, agent outputs, and structure on the same board.*\n\n![Dim0 code, widget, and mindmap examples](docs/images/code-widget-mindmap.png)\n*Generated artifacts: code, widgets, and mind maps created directly inside the canvas.*\n\n## What Dim0 Is\n\nDim0 is built around one architectural bet: **the canvas, not the chat, should be the primary interface for thinking with AI.**\n\nMost tools bolt AI onto an existing product as a sidebar. Dim0 is built the other way around: the board is designed for an agent that can read context, use tools, and write results directly back into the workspace.\n\nThe agent is not just a chatbot. It can:\n\n- Read live board context and selected nodes\n- Reason across multiple steps with tool use\n- Search the web and execute code\n- Create and edit notes directly on the board\n- Generate widgets and visual outputs inside the canvas\n\n## Node Types\n\nEverything on the board is a node. Dim0 supports:\n\n- Shape nodes for diagrams and spatial structure\n- Rich text notes for writing and editing inside the board\n- Code sandbox nodes for writing and running code\n- Widget nodes for embedded HTML/JS outputs\n- Document nodes for uploaded files and retrieval context\n- Nested boards for hierarchical organization\n- Frame-based presentation directly from the canvas\n\n## Agent Layer\n\nThe assistant layer is built on the OpenAI Agents SDK and board-aware tools. It can work with:\n\n- Board context from the current graph and selected nodes\n- Note creation and editing tools\n- Web search and fetch tools\n- Code execution via Daytona-backed sandboxes\n- Widget and visual output generation\n- Semantic storage and retrieval backed by Qdrant\n\nModel support includes OpenAI, Anthropic, Google Gemini, Mistral, Moonshot, DeepSeek, Qwen, and Z.ai.\n\n## Try It\n\n- **Hosted app:** https://app.dim0.net\n- **Website:** https://dim0.net\n- **Self-host:** follow the setup below\n\n## Monorepo Structure\n\nThis repository contains the full Dim0 product stack:\n\n- `backend/`: API, agent logic, prompts, model integrations, persistence\n- `webui/`: React frontend for the canvas, chat, and board UX\n- `build/`: Docker Compose and build-related assets\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js (LTS recommended)\n- `uv` for Python dependency management\n- Docker + Docker Compose (optional, recommended for local services)\n\n### Environment Setup\n\nBefore running Dim0, create a root `.env` from `.env.sample` and review the variables there:\n\n```bash\ncp .env.sample .env\n```\n\nAt minimum, set:\n\n- `OPENAI_API_KEY`\n- `MISTRAL_API_KEY`\n- `OPENROUTER_API_KEY`\n- `LINKUP_API_KEY`\n\nAdditional providers and tools can be enabled through the rest of `.env.sample`.\n\nImportant notes:\n\n- Both backend and frontend read the root `.env`\n- Only variables prefixed with `VITE_` are exposed to the frontend\n\n### Run Published Images\n\nPull and start the published stack:\n\n```bash\nmake pull\nmake run\n```\n\nOpen `http://localhost:3000`.\n\nStop it:\n\n```bash\nmake down-run\n```\n\nStop it and remove volumes:\n\n```bash\nmake kill-run\n```\n\n### Local Development\n\nIf you want to run the source code locally instead of the published images, use the steps below.\n\n#### Start Local Databases\n\n```bash\nmake up-db\n```\n\n#### Run the Backend\n\n```bash\ncd backend\nuv sync\nuv run python -m topix.api.app\n```\n\nThe backend uses `API_PORT` from `.env` and defaults to `8081`.\n\n#### Run the Frontend\n\n```bash\ncd webui\nnpm install\nnpm run dev\n```\n\nThe frontend uses `APP_PORT` from `.env` and defaults to `5175`.\n\n## Environment Variables\n\nThe root `.env.sample` is the source of truth for available configuration.\nIt includes app ports and origins, model provider keys, search and image provider keys, local service settings, and backend auth and tracing options.\n\nUse it as a checklist when setting up your local environment.\n\n## Docker and Deployment\n\nDeployment and local services are managed through Docker Compose with Makefile shortcuts.\n\n### Core Commands\n\n| Command | What it does |\n| --- | --- |\n| `make up` | Build if needed and start all services |\n| `make up-build` | Rebuild images, then start all services |\n| `make build` | Build images only |\n| `make rebuild` | Rebuild images without cache |\n| `make down` | Stop and remove containers |\n| `make kill` | Stop and remove containers, images, and volumes |\n\n### Service and Debug Commands\n\n| Command | What it does |\n| --- | --- |\n| `make ps` | Show service status |\n| `make logs` | Tail logs for all services |\n| `make logs-s SERVICE=backend-dev` | Tail logs for one service |\n| `make up-s SERVICE=backend-dev` | Start one service |\n| `make build-s SERVICE=webui-dev` | Build one service |\n| `make restart-s SERVICE=backend-dev` | Rebuild and restart one service |\n| `make exec SERVICE=backend-dev CMD=\"bash\"` | Open a shell in a service |\n\n### Database Shortcuts\n\n| Command | What it does |\n| --- | --- |\n| `make up-db` | Start only database services |\n| `make down-db` | Stop only database services |\n\n### Useful Overrides\n\nYou can override the compose profile and env file at invocation time:\n\n```bash\nmake up PROFILE=local ENVFILE=.env\n```\n\nYou can also override ports and origins for quick tests:\n\n```bash\nmake up PROFILE=dev API_PORT=9090 API_HOST_PORT=9090 API_ORIGIN=http://localhost:9090\n```\n\n## Docker Images\n\nThis repo can publish public Docker Hub images for self-hosting:\n\n- `winlp4ever/dim0-backend`\n- `winlp4ever/dim0-webui`\n\nExample:\n\n```bash\ndocker pull winlp4ever/dim0-backend:0.1.5\ndocker pull winlp4ever/dim0-webui:0.1.5\n```\n\nYou can also run the published images locally:\n\n```bash\nmake pull\nmake run\nmake down-run\nmake kill-run\n```\n\n## Versioning\n\nDim0 uses one shared semantic version for the whole product. The source of truth is the repo-root `VERSION` file, and release tooling syncs that version into:\n\n- `backend/pyproject.toml`\n- `webui/package.json`\n- `webui/src-tauri/Cargo.toml`\n\nVersion bumps use Commitizen with Conventional Commits.\n\nUseful commands:\n\n```bash\nmake version-check\nmake version-sync\nmake version-bump\n```\n\nThe repository also includes GitHub Actions workflows for version checks, releases, and Docker publishing.\n\n## Troubleshooting\n\n- If the frontend cannot reach the API, check `VITE_API_URL` in `.env`\n- If ports are already in use, change `API_PORT` or `APP_PORT`\n- If env changes are not applied, restart the backend and frontend after editing `.env`\n- Use `make config` to inspect the fully resolved Compose configuration\n\n## License\n\nThis repository is available under the MIT License.\n\n\u003cp align=\"center\"\u003eIf Dim0 is useful to you, a GitHub star helps others find it.\u003c/p\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvcmf%2Fdim0","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvcmf%2Fdim0","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvcmf%2Fdim0/lists"}