[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-727":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":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":9,"pushedAt":9,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":15,"starSnapshotCount":15,"syncStatus":14,"lastSyncTime":29,"discoverSource":30},727,"weft","WeaveMindAI\u002Fweft","WeaveMindAI","A programming language for AI orchestrations",null,"Rust",1486,167,25,2,0,47,109,236,141,19.68,"Other",false,"main",true,[],"2026-06-12 02:00:17","# Weft\n\n> **Building in public, two months in.** Weft is young. The language, the type system, and the durable executor are the stable parts. The node catalog is small and intentionally opinionated (a few dozen nodes across LLM, code, communication, flow, storage, and triggers). The long-term vision is to let projects define their own nodes fluently in the language itself, but that is still ahead. If you are evaluating it for production, treat it as a foundation to build on, not a finished product. Breaking changes are expected while the shape is still settling; they will be announced, and migration notes will come with them.\n>\n> **Note on the docs.** This README, `DESIGN.md`, `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`, and most of the prose around the project were written fast to get the open source release out the door. They may sound a bit AI-generated in places. If you have the time and taste to rewrite any of them more cleanly, please do. A PR that improves the writing is as welcome as one that fixes a bug.\n\n**A programming language for AI systems.**\n\nIn 2026, real software calls LLMs, spins up databases, waits for humans, browses the web, coordinates agents. Where are those primitives? You are still importing libraries and writing plumbing for things that should be one line.\n\nWeft is a language where LLMs, humans, APIs, and infrastructure are base ingredients. You wire them together, the compiler checks the architecture, and you get a visual graph of your program automatically. No plumbing.\n\n- **First-class humans.** Pause mid-program, send a form to a human, wait days, resume exactly where you left off. One node. No webhooks, no polling, no state management.\n- **Recursively foldable.** Any group of nodes collapses into a single node with a described interface. A 100-node system still looks like 5 blocks at the top level.\n- **Typed end to end.** Generics, unions, type variables, null propagation. The compiler catches missing connections, type mismatches, and broken architecture before anything runs.\n- **Durable execution.** Programs survive crashes and restarts via [Restate](https:\u002F\u002Frestate.dev). A human approval that takes three days is the same code as one that takes three seconds.\n- **Built-in nodes.** LLM, Code, HTTP, Human Query, Gate, Template, Discord, Slack, Telegram, WhatsApp, Email, X, Postgres, Memory, Apollo, Web Search, and more, the end goal will be to allow AI to build custom node on the fly using the langauge features (this is not the case right now).\n- **Two native views.** Same program, rendered as dense code for AI builders and as a graph for humans. Edit either, the other updates. Nothing is bolted on.\n\nRead the full story: [The Future of Programming (and Why I'm Building a New Language)](https:\u002F\u002Fweavemind.ai\u002Fblog\u002Ffuture-of-programming).\n\nFull documentation: [weavemind.ai\u002Fdocs](https:\u002F\u002Fweavemind.ai\u002Fdocs).\n\nJoin the community on [Discord](https:\u002F\u002Fdiscord.com\u002Finvite\u002FFGwNu6mDkU).\n\n## Star History\n\n\u003Ca href=\"https:\u002F\u002Fwww.star-history.com\u002F?repos=WeaveMindAI%2Fweft&type=date&legend=top-left\">\n \u003Cpicture>\n   \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=WeaveMindAI\u002Fweft&type=date&theme=dark&legend=top-left\" \u002F>\n   \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=WeaveMindAI\u002Fweft&type=date&legend=top-left\" \u002F>\n   \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=WeaveMindAI\u002Fweft&type=date&legend=top-left\" \u002F>\n \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n---\n\n## Quick start\n\n### Prerequisites\n\n- [Docker](https:\u002F\u002Fdocs.docker.com\u002Fget-docker\u002F) for PostgreSQL\n- [Node.js](https:\u002F\u002Fnodejs.org\u002F)\n- macOS only: `brew install bash` (Bash 4+ required).\n\nRust, Restate, and pnpm are installed automatically if missing.\n\n### Run\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FWeaveMindAI\u002Fweft.git\ncd weft\ncp .env.example .env\n# Edit .env to add your API keys (OpenRouter, Tavily, etc.)\n\n# Terminal 1: backend (auto-installs deps, starts PostgreSQL, Restate, all services)\n.\u002Fdev.sh server\n\n# Terminal 2: dashboard\n.\u002Fdev.sh dashboard\n```\n\nOpen http:\u002F\u002Flocalhost:5173 and build your first project. A tour of the dashboard and a walkthrough of the language live in the [Getting Started](https:\u002F\u002Fweavemind.ai\u002Fdocs\u002Fhello-world) guide.\n\n### VS Code\n\nFrom the parent workspace, run the **Dev Local All** task to start both the server and the dashboard in split terminals.\n\n### API keys\n\nAll keys are optional. Nodes that need one show a clear error at run time if the key is missing.\n\n```bash\nOPENROUTER_API_KEY=     # LLM nodes (OpenRouter)\nTAVILY_API_KEY=         # Web Search nodes\nELEVENLABS_API_KEY=     # Speech-to-Text nodes\nAPOLLO_API_KEY=         # Apollo enrichment nodes\nDISCORD_BOT_TOKEN=      # Discord nodes\n```\n\nPostgreSQL is auto-provisioned via Docker. No manual database setup.\n\n---\n\n## A tiny Weft program\n\n```weft\n# Project: Poem Generator\n# Description: Writes a short poem about any topic\n\ntopic = Text {\n  label: \"Topic\"\n  value: \"the silence between stars\"\n}\n\nllm_config = LlmConfig {\n  label: \"Config\"\n  model: \"anthropic\u002Fclaude-sonnet-4.6\"\n  systemPrompt: \"Write a short, beautiful poem (4-6 lines) about the given topic.\"\n  temperature: \"0.8\"\n}\n\npoet = LlmInference -> (response: String) {\n  label: \"Poet\"\n}\npoet.prompt = topic.value\npoet.config = llm_config.config\n\noutput = Debug { label: \"Poem\" }\noutput.data = poet.response\n```\n\nFour nodes, four edges. The LLM takes a topic and a config, writes a poem, the Debug node displays it. The compiler already validated every connection and every type before this paragraph finished loading.\n\nFor the full language, start with [Nodes](https:\u002F\u002Fweavemind.ai\u002Fdocs\u002Fnodes), [Connections](https:\u002F\u002Fweavemind.ai\u002Fdocs\u002Fconnections), and [Types](https:\u002F\u002Fweavemind.ai\u002Fdocs\u002Ftypes).\n\n---\n\n## Project layout\n\n```\nweft\u002F\n├── catalog\u002F                # Node definitions (source of truth)\n│   ├── ai\u002F                 #   LLM config and inference\n│   ├── code\u002F               #   Python execution\n│   ├── communication\u002F      #   Discord, Slack, Telegram, WhatsApp, Email, X\n│   ├── data\u002F               #   Text, Number, Dict, List, Pack\u002FUnpack\n│   ├── enrichment\u002F         #   Apollo, Web Search, Speech-to-Text\n│   ├── flow\u002F               #   Gate, Human Query\u002FTrigger\n│   ├── storage\u002F            #   Postgres\n│   └── triggers\u002F           #   Cron, webhooks, polling\n├── crates\u002F\n│   ├── weft-core\u002F          # Type system, Weft compiler, executor, Restate objects\n│   ├── weft-nodes\u002F         # Node trait, registry, node runner binary\n│   ├── weft-api\u002F           # REST API (triggers, files, infra, usage)\n│   └── weft-orchestrator\u002F  # Restate services and Axum project executor\n├── dashboard\u002F              # Web UI (SvelteKit + Svelte 5)\n├── extension\u002F              # Browser extension for human-in-the-loop (WXT)\n├── scripts\u002F\n│   └── catalog-link.sh     # Links catalog\u002F into crates and dashboard (run by dev.sh)\n├── init-db.sh              # PostgreSQL container setup\n├── cleanup.sh              # Stop services and reset state\n└── dev.sh                  # Development entry point\n```\n\n### How nodes work\n\nThe `catalog\u002F` directory is the source of truth for every node. Each node is a folder with two files:\n\n- `backend.rs`: the Rust implementation (the `Node` trait).\n- `frontend.ts`: the dashboard UI definition (ports, config fields, icon).\n\n`scripts\u002Fcatalog-link.sh` (run automatically by `dev.sh`) symlinks these into the Rust crate and the dashboard. The `inventory` crate auto-discovers every node at startup. Adding a new node is two files in one folder. The walkthrough is in [CONTRIBUTING.md](.\u002FCONTRIBUTING.md).\n\n---\n\n## Development\n\n```bash\n.\u002Fdev.sh server       # Backend (Restate + orchestrator + API + node runner)\n.\u002Fdev.sh dashboard    # Frontend (SvelteKit dev server)\n.\u002Fdev.sh all          # Both (server in background, dashboard in foreground)\n.\u002Fdev.sh extension    # Build browser extension\n\n.\u002Fcleanup.sh                # Stop everything, clean Restate data + DB\n.\u002Fcleanup.sh --no-db        # Stop everything but keep database\n.\u002Fcleanup.sh --services     # Just stop services\n.\u002Fcleanup.sh --db-destroy   # Remove PostgreSQL container entirely\n```\n\n### Infrastructure nodes\n\nNodes like Postgres Database provision real Kubernetes resources. For local development with infrastructure nodes:\n\n```bash\n# Install kind (local K8s)\ncurl -Lo .\u002Fkind https:\u002F\u002Fkind.sigs.k8s.io\u002Fdl\u002Fv0.31.0\u002Fkind-$(uname -s | tr '[:upper:]' '[:lower:]')-amd64\nchmod +x .\u002Fkind && sudo mv .\u002Fkind \u002Fusr\u002Flocal\u002Fbin\u002Fkind\n\n# Run with local K8s\nINFRASTRUCTURE_TARGET=local .\u002Fdev.sh server\n```\n\nInfrastructure is optional. Projects that do not use infrastructure nodes do not need Kubernetes at all.\n\n### Building without Docker\n\nThe `.sqlx` directory is committed, so `cargo build` and `cargo test` work without a running database:\n\n```bash\ncargo build          # works without PostgreSQL\ncargo test           # works without PostgreSQL\n```\n\n---\n\n## Where to go next\n\n- **Use Weft.** Build your first project: [Getting Started](https:\u002F\u002Fweavemind.ai\u002Fdocs\u002Fhello-world).\n- **Learn the language.** Start with [Nodes](https:\u002F\u002Fweavemind.ai\u002Fdocs\u002Fnodes), [Connections](https:\u002F\u002Fweavemind.ai\u002Fdocs\u002Fconnections), [Types](https:\u002F\u002Fweavemind.ai\u002Fdocs\u002Ftypes), [Groups](https:\u002F\u002Fweavemind.ai\u002Fdocs\u002Fgroups), [Parallel Processing](https:\u002F\u002Fweavemind.ai\u002Fdocs\u002Fparallel).\n- **Understand the architecture.** [DESIGN.md](.\u002FDESIGN.md) lays out the principles that guide every decision in the language.\n- **See what's coming.** [ROADMAP.md](.\u002FROADMAP.md) lists the directions we are exploring.\n- **Contribute.** [CONTRIBUTING.md](.\u002FCONTRIBUTING.md) walks through the dev loop, the repo layout, and how to add a node.\n- **Report a security issue.** [SECURITY.md](.\u002FSECURITY.md).\n- **Ask a question, share a project, argue with me.** [Discord](https:\u002F\u002Fdiscord.com\u002Finvite\u002FFGwNu6mDkU).\n\n---\n\n## License\n\n[O'Saasy License](.\u002FLICENSE). MIT with a SaaS restriction: you can use, modify, and self-host freely, but you cannot offer it as a competing hosted service. See [osaasy.dev](https:\u002F\u002Fosaasy.dev\u002F).\n\nCopyright © 2026 Quentin Feuillade--Montixi.\n","Weft 是一种专为AI系统设计的编程语言。它采用Rust编写，提供了一系列核心功能和技术特点，包括将LLM、人类互动、API和基础设施作为基础组件进行连接，自动检查架构并生成程序的可视化图形；支持长时间运行的人类交互过程，并能在中断后准确恢复执行；通过节点折叠简化复杂系统的表示；端到端类型检查确保代码质量；以及通过Restate实现持久化执行等特性。Weft适合需要高效整合多种异构服务（如自然语言处理模型、数据库操作、即时通讯工具等）的应用场景，尤其适用于构建高度依赖于外部服务调用及人机协作的智能软件项目。","2026-06-11 02:38:55","CREATED_QUERY"]