TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Windmill: Open-source developer platform to turn scripts into workflows and UIs

428 点作者 InitEnabler大约 2 年前

28 条评论

jchw大约 2 年前
I am a fan of this concept, I&#x27;ve thought a lot about it actually. Having a proper open source option is awesome and there is no doubt I&#x27;ll be trying this on some of my home&#x2F;hobby infra to see what it has to offer. If nothing else, I really think we need more exploration into the space of adding some basic engineering and ops on top of things like this.<p>Not just for servers and infrastructure, but does it bother anyone else that for example, the Linux desktop has robust APIs for managing powerful service daemons like systemd, but relatively few applications that use them and provide useful UIs&#x2F;control panels&#x2F;dashboards? Somehow for many of the tools we DO have, the Linux desktop is stuck in the age of using popen and regex against command output even though we really ought to be able to do better. It&#x27;s an odd blindspot in a lot of open source work, maybe it is deceptively difficult!<p>That&#x27;s mostly nothing to do with this project though, but the two problems are intertwined in my head as problems where a little bit of engineering could really go a long way.
评论 #35923661 未加载
thawab大约 2 年前
The best part about windmill is the team behind it, join the discord server to see how fast they fix issues and add features. The blog is also top notch: <a href="https:&#x2F;&#x2F;www.windmill.dev&#x2F;blog">https:&#x2F;&#x2F;www.windmill.dev&#x2F;blog</a>
评论 #35922199 未加载
rubenfiszel大约 2 年前
Hello, founder here. Thank you for submitting Windmill. We&#x27;re really close from hitting v2 (adding multiplayer with yjs is our last milestone) and would have waited a bit before submitting but here we go.<p>We are fully open-source (AGPLv3) with just one ee plugin for syncing the cache of the workers at large scale (more on that below). You can deploy it on a small ec2 instance with our docker-compose or on very large clusters with our helm charts: <a href="https:&#x2F;&#x2F;docs.windmill.dev&#x2F;docs&#x2F;advanced&#x2F;self_host">https:&#x2F;&#x2F;docs.windmill.dev&#x2F;docs&#x2F;advanced&#x2F;self_host</a><p>We are an onion of 3 layers, which are usually separated verticals and the closest services we replace in each vertical are: Lambda + n8n&#x2F;temporal + Retool:<p>- Workers implemented in Rust that can run any scripts from source in python&#x2F;typescript(deno)&#x2F;go&#x2F;bash. They are extremely efficient, with most typescript scripts being able to run in 40ms e2e. This can be seen as a self-hosted lambda except it works very differently. Lambdas spawn microvms using firecracker and launch http servers within those micro-vms. We run the scripts bare (with isolation using nsjail on our multi-tenant instance) but cache very aggressively the dependencies. For instance, in python we analyze the dependencies using the AST: <a href="https:&#x2F;&#x2F;github.com&#x2F;windmill-labs&#x2F;windmill&#x2F;blob&#x2F;main&#x2F;backend&#x2F;parsers&#x2F;windmill-parser-py&#x2F;src&#x2F;lib.rs">https:&#x2F;&#x2F;github.com&#x2F;windmill-labs&#x2F;windmill&#x2F;blob&#x2F;main&#x2F;backend&#x2F;...</a>, infer the dependencies from there, have them go through pip-compile to generate a lockfile (and cache the result), then create a pathset similar to how virtualenv behave with the version of each dependency locked. For typescript, we leverage the very well made immutable deno cache. The cache works well but if you scale your cluster to more than 10 workers, the likelihood of having your worker see dependencies for the first time increase, which is why we reimplemented a pip scheme backed by s3 that is extremely fast (we do not compress, just tar individual wheels and s3 is very fast on local networks). For all the supported languages, we parse the signatures of the main function to infer the corresponding json schema of the payload to trigger them, and from that jsonschema we can then generate automatically the UI and infer the input shape required in the flows for that particular step.<p>- A workflow engine re-implemented from scratch which can be seen as a distributed FSM and whose state is stored in postgresql and every transition done through postgres transactions. Every worker is picking a job and progressing the fsm at completion. The full spec is at: <a href="https:&#x2F;&#x2F;docs.windmill.dev&#x2F;docs&#x2F;openflow">https:&#x2F;&#x2F;docs.windmill.dev&#x2F;docs&#x2F;openflow</a>. We support branches, for loop, suspend&#x2F;sleep, approval steps, sharing the same folder between steps and everything you would expect from a temporal like engine (retries, error handlers).<p>- A dashboard&#x2F;app builder that is very similar to Retool but much faster because it&#x27;s implemented in Svelte and which can also run python scripts directly leveraging the 1st layer. We also support full react apps: <a href="https:&#x2F;&#x2F;github.com&#x2F;windmill-labs&#x2F;windmill-react-template">https:&#x2F;&#x2F;github.com&#x2F;windmill-labs&#x2F;windmill-react-template</a><p>We have a CLI that allows you to sync from github directly: <a href="https:&#x2F;&#x2F;github.com&#x2F;windmill-labs&#x2F;windmill-sync-example">https:&#x2F;&#x2F;github.com&#x2F;windmill-labs&#x2F;windmill-sync-example</a> or your local filesystem. Our scripts are absolutely normal scripts so there is no lock-in, and they are executable locally <a href="https:&#x2F;&#x2F;docs.windmill.dev&#x2F;docs&#x2F;advanced&#x2F;local_development">https:&#x2F;&#x2F;docs.windmill.dev&#x2F;docs&#x2F;advanced&#x2F;local_development</a> so you do not have to use our webeditor if you do not want to but our editor supports pyright and deno lsp through our dedicated backend communicating to monaco using websockets.<p>We also support worker groups to run some jobs on hardware accelerated machines (GPU) and a lot of other features (oauth syncing of the resources, schedules, granular permissioning, groups and folders).<p>Every script&#x2F;flow deployed has a dedicated webhook endpoint to run synchronously and asynchronously. Scripts are never overwritten, they keep a lineage of hash for each version and have per-hash dedicated webhook to ensure their behavior never change.<p>We also have a hub for sharing re-usable scripts <a href="https:&#x2F;&#x2F;hub.windmill.dev">https:&#x2F;&#x2F;hub.windmill.dev</a> to be used in flows to have some of the same convenience you can find in Pipedream or Zapier.<p>Our closest alternative would be Airplane.dev, but they&#x27;re not open-source, not self-hostable air-gapped, less performant, less-featured and much more expensive. You can self-host us fully free.<p>We are used in production at scale in clusters of 50 nodes+ and thanks to the reliability of Rust and Postgresql have had no downtime to report.<p>I&#x27;m a solo founder, YC S22. The MVP got some attention at the very beginning: <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=31272793" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=31272793</a> but was very bare. Now we&#x27;re ready to bring this to the next level and enable all engineers to spend more time building and less time reinventing the wheel thanks to it :)
评论 #35923281 未加载
评论 #35924862 未加载
评论 #35925242 未加载
评论 #35923838 未加载
评论 #35927862 未加载
评论 #35923093 未加载
radiowave大约 2 年前
This looks very impressive.<p>Thinking about it as an alternative to scripted workflows with Rundeck, it seems like the main gap here is getting scripts to run on a specific machine without needing to have set that machine up to run worker processes.<p>(I could be misunderstanding here, because I haven&#x27;t spotted anything in the docs that talks about the minimum deployment necessary just to allow a particular machine to run workers.)<p>Really simple example: there&#x27;s an administrative command on a mailserver, which can be used to create a new mailbox. I want to make that operation part of some workflow. With Rundeck, I can script this and I just have to make sure Rundeck has ssh credentials onto the mailserver; at execution time it&#x27;ll deploy the script, substitute in whatever variables, run it and capture the output.<p>I&#x27;m not clear on how I would achieve that with Windmill. Would it involve installing Windmill (or some component of it) on the mailserver, and setting it up as an individual worker group?
评论 #35928814 未加载
mikepurvis大约 2 年前
Thank you for this: <a href="https:&#x2F;&#x2F;github.com&#x2F;windmill-labs&#x2F;windmill#cli">https:&#x2F;&#x2F;github.com&#x2F;windmill-labs&#x2F;windmill#cli</a><p>My first questions with any new tool of this kind is immediately:<p>- Can I run&#x2F;validate branch versions of the scripts non-destructively, for example as part of pre-merge checks in an IaC CD workflow?<p>- Can I run my scripts locally without a lot of drama, while developing?<p>If the answer to either of these questions is no, then the tool is the moral equivalent of directly editing PHP files on the prod machine, unless you&#x27;re committed to deploying an entire second instance of the tool for staging&#x2F;dev purposes.
评论 #35922666 未加载
debarshri大约 2 年前
I have been following this space for really long time. I think closest competitor is Airplane.dev [1]. One of the most difficult thing to sell as a sales person is to sell an open ended workflow and UI engine and ask me to segment and prospect customers. It is not that you cant sell it, it is just too broad even for your customers to figure out a usecase, because theres always a specific tool to solve the usecase. For instance, stripe refund is one most common usecase posted by all of these platform, but there are actual tools that just does stripe refund and they solve it in depth. You can argue these tools are value for money but then if it involves build time, in long run it becomes expensive. Retool is actually captured the market really well. It is basically become the verb in the internal tool market, it is hard to compete with that even as an opensource project.<p>[1] <a href="https:&#x2F;&#x2F;airplane.dev" rel="nofollow">https:&#x2F;&#x2F;airplane.dev</a>
评论 #35927334 未加载
slig大约 2 年前
Yesterday I submitted a one-click install to Caprover, never been so easy to self host. It&#x27;s really fast on Oracle&#x27;s free 4vCPU, 24GB RAM machine.
评论 #35922937 未加载
ttt3ts大约 2 年前
Was hoping it allowed my runtime. I have a bunch of scripts in NodeJS, Python 2, C#, etc. I don&#x27;t care to rewrite them and&#x2F;or write scripts tied to a weird sandbox runtime.<p>Any support for docker based workers?
评论 #35922805 未加载
评论 #35923632 未加载
metadat大约 2 年前
This looks cool as a concept, but I&#x27;ve already got script-server [0] and it works pretty great as a no&#x2F;low code solution for UI-ifying shell scripts.<p>What does windmill do that script-server can&#x27;t? Or is windmill targeting a completely different area, and is thus irrelevant to me and my pile of 500+ python, shell, Golang, and java bin dir.<p><a href="https:&#x2F;&#x2F;github.com&#x2F;bugy&#x2F;script-server">https:&#x2F;&#x2F;github.com&#x2F;bugy&#x2F;script-server</a>
评论 #35927163 未加载
stavros大约 2 年前
We were just looking for something similar to this to run workflows at $JOB and decided to build our own in the end, because nothing we found fulfilled our requirements.<p>A few questions, just in case:<p>1. Does Windmill support long-running workflows? Our use case has our customers being in a workflow for years (as long as they have a relationship with us) and events moving them around states.<p>2. Does it support rule-based state transitions? Everything I&#x27;ve seen is &quot;when this webhook comes, go to that state&quot;, but we want something that will trigger the evaluation of a set of rules (with an event or webhook), and the rules will contact APIs to judge whether everything is satisfied for a transition to some next state.<p>3. Does it support synchronous calls? We usually want the customer to ask &quot;OK where am I now?&quot; and the system to trigger evaluation, transition them to the state they should be in, and tell them where they are. This is for use cases like the website asking &quot;the user has just submitted the data we wanted, where should I redirect them now?&quot;.<p>Those were the biggest things we couldn&#x27;t find.
评论 #35926750 未加载
ropeladder大约 2 年前
I&#x27;m confused as to how this compares to tools in the workflow manager space such as Airflow&#x2F;Perfect&#x2F;Dragster. The words describing the software are almost the same but it seems to come from alternate universe of tools I&#x27;m not familiar with. Could someone fill me in?
评论 #35923433 未加载
评论 #35923402 未加载
SPascareli13大约 2 年前
How does it compare to something like apache airflow? I like the native Go integration, and that it is specifically mentioned that the overhead is minimal to start a job. Airflow can take quite a varying amount of time to schedule your job.
评论 #35923466 未加载
irf1大约 2 年前
in this interview Ruben, the founder of Windmill, talks about his background, shares how the project got started (bootstrapped solo founder, went through YC last summer) and encourages more software engineers to start their own companies<p>interview highlights (4min): <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=_jsl0k7LX34">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=_jsl0k7LX34</a><p>full interview (33min): <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=rPLVwFRjw7o">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=rPLVwFRjw7o</a>
InitEnabler大约 2 年前
OP here... Oh dang this blew up. Found this project while trying to find a low-code &#x2F; PaaS for my home infrastructure. Found this project and decided to share. Pretty easy to selfhost as I deployed it on a Alpine Linux server using Podman + Docker Compose binary. Really nice piece of software.
GGO大约 2 年前
If I use self-hosted version with my closed source software (by calling my app&#x27;s APIs), will I have to disclose my App&#x27;s source code due to AGPLv3?
评论 #35922569 未加载
deadfece大约 2 年前
Is there a comparison of this vs something like Rundeck?
onetom大约 2 年前
<a href="https:&#x2F;&#x2F;babashka.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;babashka.org&#x2F;</a> would be great to support.<p>or maybe just the Small Clojure Interpreter: <a href="https:&#x2F;&#x2F;github.com&#x2F;babashka&#x2F;SCI">https:&#x2F;&#x2F;github.com&#x2F;babashka&#x2F;SCI</a> if it&#x27;s a requirement for proper sandboxing
majkinetor大约 2 年前
Couple of questions:<p>1. Can I see list of all executions, their parameters and complete stdout, with handy URL I can refer too?<p>2. Can I get notifications (email etc) when script fails or certain conditions are met (something appears in the output)?<p>3. Can you set execution timeout?
评论 #35922869 未加载
kosolam大约 2 年前
Cool project!<p>I wonder which kind of organizations adopt tools of this kind?<p>How does this play in the long run with maintenance and upgrades?<p>It would be great to hear from someone that ran such thing for a few years and has some insights to share..
robertlagrant大约 2 年前
Without looking in detail, I&#x27;ve had some experience with internal business process&#x2F;app development, and I always thought Temporal would be a great technology to build a platform on. Great choice.
评论 #35921484 未加载
xrd大约 2 年前
Can this be used to host external services? Is this only for faas that are inaccessible to the outside world? I&#x27;m curious if you could use this to build web hook tools specifically.
评论 #35927347 未加载
chillbill大约 2 年前
&gt; To get credentials without the OAuth providers above, send an email at contact@windmill.dev<p>Why? it’s like they’re going out of their way to add friction here.
评论 #35926964 未加载
foreigner大约 2 年前
If I use your cloud hosted version, can I sync everything (scripts, config, and UI) to a Git repo at e.g. GitHub?
评论 #35926875 未加载
评论 #35926857 未加载
nico大约 2 年前
Would love a Jupyter or chat style interface for producing the scripts, from within the platform<p>Amazing concept, thank you
评论 #35921273 未加载
评论 #35922963 未加载
marcodiego大约 2 年前
Can it be combined with Gitlab and set us free from Jira?
评论 #35922820 未加载
replwoacause大约 2 年前
Does this work with PowerShell scripts?
评论 #35922576 未加载
评论 #35921689 未加载
1000thVisitor大约 2 年前
How does this compare to Ansible, and AWX?<p><a href="https:&#x2F;&#x2F;github.com&#x2F;ansible&#x2F;awx">https:&#x2F;&#x2F;github.com&#x2F;ansible&#x2F;awx</a>
pjmlp大约 2 年前
Go is now a script language?
评论 #35921637 未加载
评论 #35922538 未加载
评论 #35922010 未加载