@flisk-sh/flisk 1.4.1 → 1.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/README.md +421 -92
- package/cli/dist/backend-languages/bun.js +5 -0
- package/cli/dist/backend-languages/go.js +3 -1
- package/cli/dist/cli.js +9 -0
- package/cli/dist/commands/completion.js +8 -1
- package/cli/dist/commands/config.js +130 -55
- package/cli/dist/commands/doctor.js +16 -15
- package/cli/dist/commands/logs.js +1 -0
- package/cli/dist/commands/project.js +1 -0
- package/cli/dist/commands/resource.js +39 -11
- package/cli/dist/commands/status.js +18 -9
- package/cli/dist/commands/up.js +102 -17
- package/cli/dist/frontend-frameworks/next.js +197 -0
- package/cli/dist/frontend-frameworks/react.js +81 -12
- package/cli/dist/frontend-frameworks/registry.js +5 -4
- package/cli/dist/frontend-frameworks/vue.js +82 -12
- package/cli/dist/generator/resource-templates.js +2 -4
- package/cli/dist/generator/template-engine.js +5 -3
- package/cli/dist/utils/cold-preflight.js +3 -2
- package/cli/dist/utils/config-explain.js +197 -0
- package/cli/dist/utils/demo-reset.js +22 -0
- package/cli/dist/utils/discovery-paths.js +7 -1
- package/cli/dist/utils/host-port-plan.js +8 -3
- package/cli/dist/utils/port-conflict-fix.js +16 -14
- package/cli/dist/utils/port-occupant.js +35 -0
- package/cli/dist/utils/project-features.js +7 -16
- package/cli/dist/utils/project-templates.js +8 -8
- package/cli/dist/utils/resource-features.js +5 -5
- package/cli/dist/utils/service-manifest.js +1 -0
- package/cli/dist/utils/service-urls.js +11 -0
- package/cli/dist/utils/startup-report.js +4 -3
- package/cli/dist/utils/tar.js +33 -28
- package/cli/dist/utils/tilt-process.js +4 -3
- package/cli/dist/utils/windows-doctor.js +18 -15
- package/cli/dist-bundle/{chunk-UJXR6MZ2.js → chunk-4J2FLFUA.js} +14 -7
- package/cli/dist-bundle/{chunk-SRN64OPO.js → chunk-BMHPPX2Q.js} +10 -10
- package/cli/dist-bundle/chunk-BP2M4OJ4.js +2 -0
- package/cli/dist-bundle/{chunk-TZNXL3IO.js → chunk-CGTWXWBU.js} +1 -1
- package/cli/dist-bundle/chunk-GPUJ55MI.js +3 -0
- package/cli/dist-bundle/{chunk-KJOCVAMQ.js → chunk-LUUJ4JB7.js} +1 -1
- package/cli/dist-bundle/chunk-PEZQEZVV.js +17 -0
- package/cli/dist-bundle/{chunk-7HR5PVOD.js → chunk-SFOFTVYM.js} +5 -5
- package/cli/dist-bundle/{chunk-RX6O3PG4.js → chunk-TIYTGN5R.js} +1 -1
- package/cli/dist-bundle/{chunk-BB5BZ37Y.js → chunk-U42XZWXB.js} +1 -1
- package/cli/dist-bundle/chunk-ULMQVD7J.js +122 -0
- package/cli/dist-bundle/chunk-V36PT2HF.js +24 -0
- package/cli/dist-bundle/{chunk-7IXBBU27.js → chunk-VMVTECCK.js} +1 -1
- package/cli/dist-bundle/{chunk-M2R464RM.js → chunk-Z5QEE4SW.js} +1 -1
- package/cli/dist-bundle/cli.js +607 -375
- package/cli/dist-bundle/cold-preflight-3BNDOLGS.js +2 -0
- package/cli/dist-bundle/{demo-stage-HIHO4VV3.js → demo-stage-G4W23BXW.js} +1 -1
- package/cli/dist-bundle/{extension-fetch-VEFSCG4B.js → extension-fetch-KIPYDIRM.js} +1 -1
- package/cli/dist-bundle/{open-W3QX35R6.js → open-HQFT6WDC.js} +1 -1
- package/cli/dist-bundle/project-JZO2CPZZ.js +2 -0
- package/cli/dist-bundle/{project-templates-EYSQG2EO.js → project-templates-IMJ3OX5I.js} +1 -1
- package/cli/dist-bundle/{services-RGTQ2LXC.js → services-GLFKZBBZ.js} +1 -1
- package/cli/dist-bundle/{tilt-port-owner-6DO7OJRR.js → tilt-port-owner-PJN4MPYE.js} +1 -1
- package/cli/package.json +1 -1
- package/package.json +2 -1
- package/runtime/engine/topologies/platform/docker/compose/compose.star +40 -4
- package/runtime/engine/topologies/platform/docker/dockerfile/language_dockerfile.star +6 -0
- package/runtime/engine/topologies/platform/docker/dockerfile/next_dockerfile.star +83 -0
- package/runtime/engine/topologies/platform/docker/index.star +4 -0
- package/runtime/engine/topologies/platform/docker/layers/prisma/filesystem_setup.star +7 -0
- package/runtime/engine/topologies/platform/docker/networking/traefik.star +85 -46
- package/runtime/engine/topologies/tilt/common/utils_output.star +1 -0
- package/runtime/engine/topologies/tilt/generators/validators.star +1 -1
- package/runtime/engine/topologies/tilt/generators/vite/frontend.star +2 -2
- package/runtime/engine/topologies/tilt/generators/vite/generators.star +3 -0
- package/runtime/engine/topologies/tilt/manifest/constants.star +3 -0
- package/runtime/engine/topologies/tilt/manifest/parser.star +9 -3
- package/runtime/engine/topologies/tilt/resources/orchestrator/apply_compose_resource_registration.star +8 -3
- package/runtime/engine/topologies/tilt/resources/orchestrator/generators/dependencies/resolver.star +50 -24
- package/runtime/engine/topologies/tilt/resources/orchestrator/generators/env.star +11 -2
- package/runtime/engine/topologies/tilt/resources/orchestrator/generators/manifest_resource.star +23 -9
- package/cli/dist-bundle/chunk-DUNCELUK.js +0 -24
- package/cli/dist-bundle/chunk-K6SOCO6V.js +0 -3
- package/cli/dist-bundle/chunk-L6U555CJ.js +0 -61
- package/cli/dist-bundle/chunk-VRESY4NR.js +0 -17
- package/cli/dist-bundle/chunk-YL56J2WX.js +0 -2
- package/cli/dist-bundle/cold-preflight-BBDDHWRV.js +0 -2
- package/cli/dist-bundle/project-FW5LL2KM.js +0 -2
package/README.md
CHANGED
|
@@ -1,24 +1,149 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
# Flisk
|
|
3
|
+
# Flisk: your whole stack, running locally with one command
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Ask your AI agent for an app, or type four commands yourself.<br />Flisk sets up the containers, database, routing, and secrets, wires them together, and keeps them in sync as you change things.
|
|
6
6
|
|
|
7
7
|
<img src="https://raw.githubusercontent.com/flisk-sh/.github/main/profile/header-flisk.svg" alt="Flisk: your whole stack, running locally with one command." width="100%">
|
|
8
8
|
|
|
9
|
+
[](https://discord.gg/Sjhb3tnq3)
|
|
10
|
+
[](https://www.npmjs.com/package/@flisk-sh/flisk) [](https://www.npmjs.com/package/@flisk-sh/flisk) [](https://github.com/flisk-sh/flisk/stargazers) [](LICENSE)
|
|
11
|
+
|
|
12
|
+
<a href="https://trendshift.io/repositories/266432?utm_source=trendshift-badge&utm_medium=badge&utm_campaign=badge-trendshift-266432" target="_blank" rel="noopener noreferrer"><img src="https://trendshift.io/api/badge/trendshift/repositories/266432/weekly?language=Starlark" alt="flisk-sh%2Fflisk | Trendshift" width="250" height="55"/></a>
|
|
13
|
+
|
|
14
|
+
<img src="docs/assets/demo-ai.svg" alt="An AI coding agent builds a small online shop with Flisk and runs it locally" width="900" />
|
|
15
|
+
|
|
16
|
+
<sub>An illustrative agent session. The Flisk commands, and the service list and URLs Flisk prints, come from a real run. Copy the prompt from <a href="#with-your-ai-agent">Try it</a>.</sub>
|
|
17
|
+
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
## Trusted by
|
|
21
|
+
|
|
22
|
+
<table align="center">
|
|
23
|
+
<tr><td align="center" valign="middle"><a href="https://www.linkedin.com/company/lekast/"><img src="docs/assets/trusted-by/lekast.png" alt="Lekast" height="64"></a></td><td align="center" valign="middle"><a href="https://medium.com/@mfin.services"><img src="docs/assets/trusted-by/mfin-services.png" alt="MFin Services" height="64"></a></td><td align="center" valign="middle"><a href="https://www.linkedin.com/company/makeofferio"><img src="docs/assets/trusted-by/makeoffer.png" alt="MakeOffer" height="64"></a></td><td align="center" valign="middle"><a href="https://redmoon.digital/"><img src="docs/assets/trusted-by/redmoon-digital.png" alt="RedMoon.Digital" height="64"></a></td></tr>
|
|
24
|
+
</table>
|
|
25
|
+
|
|
26
|
+
<p align="center"><sub>Teams that run <code>flisk up</code> on their own code, listed with their consent. <a href="docs/project/ADOPTERS.md">See all adopters</a> or <a href="https://github.com/flisk-sh/flisk/issues/new?template=we-use-flisk.yml">add yours</a>.</sub></p>
|
|
27
|
+
|
|
28
|
+
## Try it
|
|
29
|
+
|
|
30
|
+
### With your AI agent
|
|
31
|
+
|
|
32
|
+
Install Flisk, then paste a prompt into your coding agent. Claude Code, Codex, Cursor, GitHub Copilot, and any other agent that can run commands will work. Every block below has a copy button.
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install -g @flisk-sh/flisk
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**The prompt from the demo:**
|
|
39
|
+
|
|
40
|
+
```text
|
|
41
|
+
Build me a small online shop with a storefront and an orders API, and run it on my laptop with Flisk.
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Your agent creates the project, adds each part, and starts it. If something is missing on your computer, `flisk doctor` tells it what to fix.
|
|
45
|
+
|
|
46
|
+
<details>
|
|
47
|
+
<summary>More prompts to copy</summary>
|
|
48
|
+
|
|
49
|
+
**Add a service to a project you already have**
|
|
50
|
+
|
|
51
|
+
```text
|
|
52
|
+
Use Flisk to add a backend service called payments-api to my shop stack, then start the stack and give me the URLs.
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**Build an AI agent with tools and a database**
|
|
56
|
+
|
|
57
|
+
```text
|
|
58
|
+
Use Flisk to scaffold an AI agent, an MCP tools server, and a database in one stack called shop, then start it and tell me how to talk to the agent.
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Something is not working**
|
|
62
|
+
|
|
63
|
+
```text
|
|
64
|
+
Run flisk doctor, explain every problem in plain words, and fix what you can. Then start my stack with flisk up.
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**See what is running**
|
|
68
|
+
|
|
69
|
+
```text
|
|
70
|
+
Use flisk status to tell me which services are running, which are unhealthy, and what URL each one has.
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Stop everything**
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
Stop my Flisk stack with flisk down and confirm nothing is left running.
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
</details>
|
|
80
|
+
|
|
81
|
+
<details>
|
|
82
|
+
<summary>Connect your agent to Flisk as an MCP server</summary>
|
|
83
|
+
|
|
84
|
+
Install the CLI, then add the Flisk MCP server to your agent's settings:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
npm install -g @flisk-sh/flisk
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
```json
|
|
91
|
+
{
|
|
92
|
+
"mcpServers": {
|
|
93
|
+
"flisk": { "command": "flisk", "args": ["mcp"] }
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
The agent can then start the stack, check status, restart a service, and read agent sessions through Flisk tools instead of shell commands. See [use Flisk with your AI agent](#use-flisk-with-your-ai-agent).
|
|
99
|
+
|
|
100
|
+
</details>
|
|
101
|
+
|
|
102
|
+
### In your terminal
|
|
103
|
+
|
|
104
|
+
<p align="center">
|
|
105
|
+
<img src="docs/assets/demo-cli.svg" alt="Four flisk commands create a project, an API, and a website, then start them" width="900" />
|
|
106
|
+
</p>
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
npm install -g @flisk-sh/flisk
|
|
110
|
+
mkdir my-shop && cd my-shop
|
|
111
|
+
flisk project --yes
|
|
112
|
+
flisk resource orders-api --type backend --stack shop --yes
|
|
113
|
+
flisk resource shop-web --type frontend --stack shop --yes
|
|
114
|
+
flisk up shop
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
You get an orders API and a storefront behind one local gateway, with Postgres and live reload. You need Docker, [Tilt](https://docs.tilt.dev/install.html), Node.js 22.12+, and [Bun](https://bun.sh/) 1.2+; `flisk doctor` checks your machine. Prefer to answer questions instead? `npm init create-microservices my-project` asks what to create. See the [quick start](#quick-start) for every option.
|
|
118
|
+
|
|
119
|
+
<div align="center">
|
|
120
|
+
|
|
121
|
+
<p><strong><a href="#quick-start">Quick start</a> · <a href="#why-flisk-cli">Why Flisk</a> · <a href="#examples">Examples</a> · <a href="#installation">Installation</a> · <a href="#faq">FAQ</a> · <a href="#docs">Documentation</a></strong></p>
|
|
122
|
+
|
|
123
|
+
[Website](https://flisk.sh/) · [Quickstart](https://flisk.sh/docs/quickstart/) · [Examples](https://flisk.sh/docs/examples/) · [Awesome Flisk](https://github.com/flisk-sh/awesome-tdk-framework) · [Demo](https://flisk-sh.github.io/flisk-demo-animation/) · [Report a bug](https://github.com/flisk-sh/flisk/issues)
|
|
124
|
+
|
|
125
|
+
<a id="readme-languages"></a>
|
|
126
|
+
|
|
127
|
+
<p align="center">
|
|
128
|
+
|
|
129
|
+
English | [简体中文](docs/README-zh_cn.md) | [繁體中文](docs/README-zh_tw.md) | [日本語](docs/README-ja.md) | [한국어](docs/README-ko.md) | [Türkçe](docs/README-tr.md) | [Tiếng Việt](docs/README-vi.md) | [ไทย](docs/README-th.md) | [Deutsch](docs/README-de.md) | [Español](docs/README-es.md) | [Français](docs/README-fr.md) | [Українська](docs/README-uk.md) | [Polski](docs/README-pl.md) | [Português (Brasil)](docs/README-pt-BR.md) | [العربية](docs/README-ar.md) | [فارسی](docs/README-fa.md) | [Bahasa Indonesia](docs/README-id.md) | [Italiano](docs/README-it.md) | [Ελληνικά](docs/README-el.md) | [മലയാളം](docs/README-ml.md)
|
|
130
|
+
|
|
131
|
+
</p>
|
|
132
|
+
|
|
133
|
+
<details>
|
|
134
|
+
<summary>Test, scale, and security status</summary>
|
|
9
135
|
|
|
10
|
-
[](https://discord.gg/JG6r33HVB)
|
|
11
|
-
[](https://www.npmjs.com/package/@flisk-sh/flisk) [](https://www.npmjs.com/package/@flisk-sh/flisk) [](https://packagephobia.com/result?p=@flisk-sh/flisk) [](https://packagephobia.com/result?p=@flisk-sh/flisk) [](https://github.com/flisk-sh/flisk/stargazers) [](https://ossinsight.io/analyze/flisk-sh/flisk) [](https://x.com/brookservers)
|
|
12
136
|
[](https://github.com/flisk-sh/flisk/actions/workflows/e2e-journeys.yml) [](https://github.com/flisk-sh/flisk/actions/workflows/e2e-scale-full.yml) [](https://github.com/flisk-sh/flisk/actions/workflows/e2e-real-apps.yml) [](https://github.com/flisk-sh/flisk/security/code-scanning) [](https://scorecard.dev/viewer/?uri=github.com/flisk-sh/flisk) [](https://snyk.io/test/github/flisk-sh/flisk) [](https://socket.dev/npm/package/@flisk-sh/flisk/overview)
|
|
13
|
-
[](LICENSE)
|
|
14
137
|
|
|
15
138
|
[](https://github.com/flisk-sh/flisk/actions/runs/39160719471) [](https://github.com/flisk-sh/flisk/actions/runs/39160719471) [](https://github.com/flisk-sh/flisk/actions/runs/39160719471) [](https://github.com/flisk-sh/flisk/actions/runs/39160719471) [](https://github.com/flisk-sh/flisk/actions/runs/39160719471)
|
|
16
139
|
[](https://github.com/flisk-sh/flisk/blob/main/docs/assets/coverage.svg)
|
|
17
140
|
|
|
18
141
|
<sub>ERP fixture scale run on a clean GitHub-hosted runner (4 vCPU, 15 GB RAM), snapshot from [run 39160719471](https://github.com/flisk-sh/flisk/actions/runs/39160719471). The live status is in the ERP fixture scale E2E badge above.</sub>
|
|
19
142
|
|
|
143
|
+
[](https://packagephobia.com/result?p=@flisk-sh/flisk) [](https://packagephobia.com/result?p=@flisk-sh/flisk) [](https://ossinsight.io/analyze/flisk-sh/flisk) [](https://x.com/brookservers)
|
|
144
|
+
|
|
20
145
|
<a href="https://trendshift.io/repositories/266432?utm_source=trendshift-badge&utm_medium=badge&utm_campaign=badge-trendshift-266432" target="_blank" rel="noopener noreferrer"><img src="https://trendshift.io/api/badge/trendshift/repositories/266432/daily?language=Starlark" alt="flisk-sh%2Fflisk | Trendshift" width="250" height="55"/></a>
|
|
21
|
-
|
|
146
|
+
|
|
22
147
|
<p align="center">
|
|
23
148
|
<a href="https://www.bestpractices.dev/projects/15310">
|
|
24
149
|
<img src="https://www.bestpractices.dev/assets/openssf_bestpracticesbadge-a908f4124737f3d6b2c5abc82756bd2a435cff474b45615ce469746c31a4288c.svg" alt="OpenSSF Best Practices" height="80" align="middle" style="vertical-align: middle" />
|
|
@@ -28,19 +153,7 @@ Go from an empty folder to a running tech stack with one command. Built for agen
|
|
|
28
153
|
</a>
|
|
29
154
|
</p>
|
|
30
155
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
<a id="readme-languages"></a>
|
|
34
|
-
|
|
35
|
-
<p align="center">
|
|
36
|
-
|
|
37
|
-
English | [简体中文](docs/README-zh_cn.md) | [繁體中文](docs/README-zh_tw.md) | [日本語](docs/README-ja.md) | [한국어](docs/README-ko.md) | [Türkçe](docs/README-tr.md) | [Tiếng Việt](docs/README-vi.md) | [ไทย](docs/README-th.md) | [Deutsch](docs/README-de.md) | [Español](docs/README-es.md) | [Français](docs/README-fr.md) | [Українська](docs/README-uk.md) | [Polski](docs/README-pl.md) | [Português (Brasil)](docs/README-pt-BR.md) | [العربية](docs/README-ar.md) | [فارسی](docs/README-fa.md) | [Bahasa Indonesia](docs/README-id.md) | [Italiano](docs/README-it.md) | [Ελληνικά](docs/README-el.md) | [മലയാളം](docs/README-ml.md)
|
|
38
|
-
|
|
39
|
-
</p>
|
|
40
|
-
|
|
41
|
-
<br />
|
|
42
|
-
|
|
43
|
-
[Website](https://flisk.sh/) · [Quickstart](https://flisk.sh/docs/quickstart/) · [Examples](https://flisk.sh/docs/examples/) · [Awesome Flisk](https://github.com/flisk-sh/awesome-tdk-framework) · [Demo](https://flisk-sh.github.io/flisk-demo-animation/) · [Report a bug](https://github.com/flisk-sh/flisk/issues)
|
|
156
|
+
</details>
|
|
44
157
|
|
|
45
158
|
</div>
|
|
46
159
|
|
|
@@ -114,11 +227,9 @@ Fastest way (recommended): open the [Flisk starter](https://github.com/flisk-sh/
|
|
|
114
227
|
|
|
115
228
|
</details>
|
|
116
229
|
|
|
117
|
-
### ⚡
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
* **Databases & Tooling:** Prisma, Drizzle, Atlas, Dbmate
|
|
121
|
-
* **Messaging & Gateway:** NATS, Traefik
|
|
230
|
+
### ⚡ A one-backend stack is healthy in about 14 seconds
|
|
231
|
+
|
|
232
|
+
On a one-backend quickstart with warm image layers, `flisk up` reaches a healthy API in 12.8 to 13.8 seconds ([timing notes](docs/benchmarks/quickstart-timing.md)). An 8-service stack settles in 32 to 42 seconds warm and about 4.5 minutes on its first cold build ([benchmark](docs/benchmarks/results/tdk-up-warm-start-2026-10-11/summary.md)). No vendor lock-in and no hand-written plumbing.
|
|
122
233
|
|
|
123
234
|
### 🤖 Run your AI agents next to your services
|
|
124
235
|
|
|
@@ -134,11 +245,11 @@ flisk up shop
|
|
|
134
245
|
Agents get durable checkpoint volumes that survive `flisk down`, sticky session routing via `x-session-id`, graceful SIGTERM drain during hot reloads, a Docker health check on `/health`, and application-level readiness checks on `/ready`. See the [AI agents guide](docs/agents/ai-agents.md) and [honest comparison with agent frameworks](docs/compare-honest.md#ai-agent-frameworks-and-workflow-engines-libfx-langgraph-mastra-vercel-workflows-temporal).
|
|
135
246
|
|
|
136
247
|
|
|
137
|
-
Flisk
|
|
248
|
+
**What Flisk is:** a local development runtime. Define each service in `service.json` and run `flisk up`. Docker runs the containers, Tilt live-updates them while you code, and Flisk writes the configuration both use. No local Kubernetes is needed.
|
|
138
249
|
|
|
139
|
-
|
|
250
|
+
**What Flisk is not:** a deploy tool or a Compose file. Production deployment stays with Helm, Argo CD, or Kustomize.
|
|
140
251
|
|
|
141
|
-
|
|
252
|
+
Stability: 1.x. The core CLI is MIT and needs no key; Premium is optional. See [what Flisk writes](docs/generated-files.md) and how to check for drift.
|
|
142
253
|
|
|
143
254
|
|
|
144
255
|
> [!IMPORTANT]
|
|
@@ -147,12 +258,6 @@ Docker runs the containers. Tilt watches services and live-updates containers wh
|
|
|
147
258
|
> [official website](https://flisk.sh/). Follow the installation links from these official sources.
|
|
148
259
|
> A similar repository name or copied README does not establish that a download is official.
|
|
149
260
|
|
|
150
|
-
<p align="center"><strong><a href="#quick-start">Quick start</a> · <a href="#why-flisk-cli">Why Flisk</a> · <a href="#examples">Examples</a> · <a href="#installation">Installation</a> · <a href="#faq">FAQ</a> · <a href="#docs">Documentation</a></strong></p>
|
|
151
|
-
|
|
152
|
-
If Flisk helps you run your local stack, a ⭐ on [this repo](https://github.com/flisk-sh/flisk) helps other developers find it.
|
|
153
|
-
|
|
154
|
-
`flisk ui` opens an interactive terminal dashboard for inspecting running services. Move with `↑/↓` or `j/k`, search with `/`, and press `1`–`5` to jump between tabs. See [docs/ui.md](docs/ui.md) for every key binding.
|
|
155
|
-
|
|
156
261
|
## Why Flisk CLI?
|
|
157
262
|
|
|
158
263
|
- **One `service.json` per service.** Flisk generates the Dockerfile, Traefik routing, and Tiltfile from it. You do not hand-write a `docker-compose.yml` or `nginx.conf`.
|
|
@@ -178,6 +283,22 @@ See the [detailed tool comparison](docs/comparison.md) for architectural tradeof
|
|
|
178
283
|
|
|
179
284
|
Production deployment stays with your own tools (Helm, Argo CD, or Kustomize).
|
|
180
285
|
|
|
286
|
+
### Everything is wired together, and stays in sync
|
|
287
|
+
|
|
288
|
+
You do not connect services by hand. Flisk derives each connection from the same `service.json` files and regenerates it when they change.
|
|
289
|
+
|
|
290
|
+
| When you... | Flisk updates |
|
|
291
|
+
| --- | --- |
|
|
292
|
+
| Add a service with `flisk resource` | It is discovered automatically and its stack is enabled on the next `flisk up`. It gets an image build, a Compose entry, gateway routes, a health check, and its own `.autogenerated/` files. |
|
|
293
|
+
| Edit a `service.json` (port, `dependsOn`, features) | The Dockerfile, Compose entry, Traefik labels, and nginx config are regenerated on the next `flisk up`. A hand edit to a generated file is caught as drift before anything starts. |
|
|
294
|
+
| Edit your code | Tilt live-updates the running container. No rebuild step. |
|
|
295
|
+
| Add a backend route | Frontends already point at the API through generated `VITE_API_URL`, `env.ts`, and `api-client.ts`, built from the same hostnames the gateway routes. |
|
|
296
|
+
| Add a database or a second backend | `DATABASE_URL` and the other connection settings are injected into each service's environment. No copying of passwords or hostnames. |
|
|
297
|
+
| Run on a project with an older or missing `.env` | Missing secrets such as `JWT_SECRET` are generated without overwriting your values. |
|
|
298
|
+
| Declare `dependsOn` | Services start in health-checked order. |
|
|
299
|
+
|
|
300
|
+
See [how `flisk up` works](docs/how-flisk-up-works.md) for the full startup sequence.
|
|
301
|
+
|
|
181
302
|
## What you can do with Flisk
|
|
182
303
|
|
|
183
304
|
| You want to | Flisk does | Command |
|
|
@@ -191,6 +312,12 @@ Production deployment stays with your own tools (Helm, Argo CD, or Kustomize).
|
|
|
191
312
|
| Catch config drift | Compares generated files with what Flisk last wrote | `flisk config verify` |
|
|
192
313
|
| Keep Flisk current | Upgrades the CLI in place | `flisk upgrade` |
|
|
193
314
|
|
|
315
|
+
Flisk works with:
|
|
316
|
+
|
|
317
|
+
* **Runtimes & Frameworks:** Bun, Node, Python, Go, Rust, React, Vue, Svelte, Elysia, Fastify, NestJS
|
|
318
|
+
* **Databases & Tooling:** Prisma, Drizzle, Atlas, Dbmate
|
|
319
|
+
* **Messaging & Gateway:** NATS, Traefik
|
|
320
|
+
|
|
194
321
|
## Who uses Flisk
|
|
195
322
|
|
|
196
323
|
Teams that run `flisk up` on their own code (listed with their consent in [ADOPTERS.md](docs/project/ADOPTERS.md)):
|
|
@@ -206,95 +333,235 @@ If Flisk saves you time, a ⭐ on [this repo](https://github.com/flisk-sh/flisk)
|
|
|
206
333
|
|
|
207
334
|
## Quick start
|
|
208
335
|
|
|
209
|
-
|
|
336
|
+
Get a running local stack in **3 commands**. Works on macOS, Linux, and Windows (via WSL2).
|
|
210
337
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
|
214
|
-
|
|
338
|
+
### Prerequisites (install once)
|
|
339
|
+
|
|
340
|
+
| Tool | Version | Install | Install path |
|
|
341
|
+
|------|---------|---------|--------------|
|
|
342
|
+
| **Docker** | Engine 25+, Compose 2.20.2+ | [docker.com](https://www.docker.com/products/docker-desktop/) | All paths |
|
|
343
|
+
| **Tilt** | 0.25+ | `curl -fsSL https://raw.githubusercontent.com/tilt-dev/tilt/master/scripts/install.sh \| bash` | All paths |
|
|
344
|
+
| **Node.js** | 22.12+ | [nodejs.org](https://nodejs.org/) | npm path (`npm install -g @flisk-sh/flisk`) |
|
|
345
|
+
| **Bun** | 1.2+ | `curl -fsSL https://bun.sh/install \| bash` | Bun path (`bun add -g @flisk-sh/flisk`) |
|
|
215
346
|
|
|
216
|
-
|
|
347
|
+
> **Conditional prerequisites**: Node.js is only required when you install Flisk via npm (`npm install -g @flisk-sh/flisk`). Bun is only required when you install via Bun or your project has generated JavaScript services. Docker and Tilt are required for every path.
|
|
217
348
|
|
|
218
|
-
**
|
|
349
|
+
> **Windows?** Use WSL2 Ubuntu. See the [Windows & WSL2 guide](docs/wsl2.md) for the recommended setup.
|
|
219
350
|
|
|
220
|
-
|
|
221
|
-
- Docker, installed and running (Engine 25+, Compose 2.20.2+)
|
|
222
|
-
- [Tilt](https://docs.tilt.dev/install.html)
|
|
223
|
-
- [Bun](https://bun.sh/) 1.2+
|
|
351
|
+
---
|
|
224
352
|
|
|
225
|
-
|
|
353
|
+
### Fastest path: one-command demo (no manual steps)
|
|
226
354
|
|
|
227
355
|
```bash
|
|
356
|
+
# 1. Install Flisk
|
|
228
357
|
npm install -g @flisk-sh/flisk
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
flisk
|
|
358
|
+
|
|
359
|
+
# 2. Run the demo — scaffolds a project, installs deps, boots the stack, opens the frontend
|
|
360
|
+
flisk demo
|
|
232
361
|
```
|
|
233
362
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
363
|
+
That's it. The demo clones the starter into `~/.flisk/flisk-demo`, installs dependencies, starts the stack, and opens the frontend in your browser. Press `Ctrl+C` to stop, then run `flisk down` to clean up.
|
|
364
|
+
|
|
365
|
+
---
|
|
237
366
|
|
|
238
|
-
|
|
367
|
+
### Full control: manual project setup
|
|
239
368
|
|
|
240
|
-
|
|
369
|
+
If you want to build your own service structure:
|
|
241
370
|
|
|
242
371
|
```bash
|
|
243
|
-
|
|
372
|
+
# 1. Install Flisk (skip if already installed)
|
|
373
|
+
npm install -g @flisk-sh/flisk
|
|
374
|
+
|
|
375
|
+
# 2. Create a project with a backend API
|
|
376
|
+
mkdir my-project && cd my-project
|
|
377
|
+
flisk project --yes
|
|
378
|
+
flisk resource api --type backend --stack main --yes
|
|
379
|
+
|
|
380
|
+
# 3. Start the stack
|
|
381
|
+
flisk up main
|
|
244
382
|
```
|
|
245
383
|
|
|
246
|
-
|
|
384
|
+
`flisk up` prints the URLs (e.g., `http://api.main.localhost/api/api/health`). Try it:
|
|
247
385
|
|
|
248
|
-
|
|
249
|
-
|
|
386
|
+
```bash
|
|
387
|
+
curl http://api.main.localhost/api/api/health
|
|
388
|
+
```
|
|
250
389
|
|
|
251
|
-
|
|
390
|
+
To add a frontend later:
|
|
252
391
|
|
|
253
|
-
|
|
392
|
+
```bash
|
|
393
|
+
flisk resource web --type frontend --stack main --yes
|
|
394
|
+
flisk up main
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
---
|
|
398
|
+
|
|
399
|
+
### Alternative: guided scaffolder
|
|
400
|
+
|
|
401
|
+
Prefer interactive prompts? The `create-microservices` package asks for your service types and generates a ready project:
|
|
254
402
|
|
|
255
403
|
```bash
|
|
256
|
-
|
|
404
|
+
npm install -g @flisk-sh/flisk
|
|
405
|
+
npm init create-microservices my-project
|
|
406
|
+
cd my-project
|
|
407
|
+
flisk up main
|
|
257
408
|
```
|
|
258
409
|
|
|
259
|
-
|
|
410
|
+
To skip prompts and get a default `api` + `web`:
|
|
260
411
|
|
|
261
412
|
```bash
|
|
262
|
-
|
|
263
|
-
flisk project --yes
|
|
264
|
-
flisk resource orders-api --type backend --stack shop --yes
|
|
265
|
-
flisk up shop
|
|
266
|
-
curl http://api.shop.localhost/api/orders/health
|
|
413
|
+
npm init create-microservices my-project -- --yes
|
|
267
414
|
```
|
|
268
415
|
|
|
269
|
-
|
|
416
|
+
See the [`create-microservices` README](https://github.com/flisk-sh/create-microservices#readme) for all options.
|
|
270
417
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
418
|
+
---
|
|
419
|
+
|
|
420
|
+
### Verify it works
|
|
421
|
+
|
|
422
|
+
After `flisk up`, you'll see output like:
|
|
423
|
+
|
|
424
|
+
```
|
|
425
|
+
Flisk is up.
|
|
426
|
+
Tilt UI: http://localhost:10350
|
|
427
|
+
Services:
|
|
428
|
+
✓ api → http://api.main.localhost/api/api/health
|
|
429
|
+
✓ web → http://web.main.localhost
|
|
430
|
+
Stop: flisk down
|
|
431
|
+
Logs: flisk logs <service>
|
|
432
|
+
Next: flisk help # or visit https://flisk.sh/docs
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
- **Tilt UI**: Open to watch live updates, see logs, and debug
|
|
436
|
+
- **Services**: Click the URLs or curl the health endpoints
|
|
437
|
+
- **Stop**: `flisk down` stops everything; containers persist for inspection
|
|
438
|
+
|
|
439
|
+
---
|
|
276
440
|
|
|
277
|
-
###
|
|
441
|
+
### Common next steps
|
|
278
442
|
|
|
279
|
-
|
|
443
|
+
| Goal | Command |
|
|
444
|
+
|------|---------|
|
|
445
|
+
| See running services | `flisk ui` |
|
|
446
|
+
| Check environment health | `flisk doctor` |
|
|
447
|
+
| View service logs | `flisk logs api` |
|
|
448
|
+
| Restart a service | `flisk restart api` |
|
|
449
|
+
| Preview without starting | `flisk up main --dry-run` |
|
|
450
|
+
| Catch config drift | `flisk config verify` |
|
|
451
|
+
| Upgrade Flisk | `flisk upgrade` |
|
|
452
|
+
|
|
453
|
+
### Troubleshooting
|
|
454
|
+
|
|
455
|
+
| Issue | Fix |
|
|
456
|
+
|-------|-----|
|
|
457
|
+
| `flisk doctor` fails | Run the fix commands it prints, then retry |
|
|
458
|
+
| Port 80/5432 in use | `flisk doctor` shows the owner; stop it or set `FLISK_HTTP_PORT` |
|
|
459
|
+
| Docker not running | Start Docker Desktop / `systemctl start docker` |
|
|
460
|
+
| Windows native | Use WSL2 Ubuntu; see [Windows guide](docs/wsl2.md) |
|
|
461
|
+
| `flisk up` refuses | Run `flisk doctor` first; it explains what's missing |
|
|
462
|
+
|
|
463
|
+
Full troubleshooting: [docs/troubleshooting.md](docs/troubleshooting.md)
|
|
464
|
+
|
|
465
|
+
### What Flisk writes for you
|
|
466
|
+
|
|
467
|
+
You write one `service.json` per service. For the two-service shop above, Flisk writes the rest at three levels: the project, the stack, and each service.
|
|
280
468
|
|
|
281
469
|
```text
|
|
282
|
-
|
|
283
|
-
├──
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
470
|
+
my-shop/
|
|
471
|
+
├── .env # generated DB_PASSWORD and JWT_SECRET
|
|
472
|
+
├── .flisk/
|
|
473
|
+
│ ├── project.json # project settings (yours to edit)
|
|
474
|
+
│ └── .flisk-out/ # PROJECT LEVEL
|
|
475
|
+
│ ├── Tiltfile # what Tilt runs
|
|
476
|
+
│ ├── docker-compose.traefik.yml # local gateway, bound to 127.0.0.1
|
|
477
|
+
│ ├── golden-layers.Dockerfile # shared base image layers
|
|
478
|
+
│ ├── TILT_TECH_STACK.star # tech stack settings
|
|
479
|
+
│ ├── TILT_RESOURCE_DEFAULTS.star # service defaults
|
|
480
|
+
│ ├── spec.master # project spec by stack
|
|
481
|
+
│ └── flisk-cli-ext/ # pinned copy of the Flisk engine
|
|
482
|
+
├── shared-platform-engineering/
|
|
483
|
+
│ └── docker-templates/ # container entrypoint scripts
|
|
484
|
+
└── services/
|
|
485
|
+
├── platform/database-management/
|
|
486
|
+
│ └── docker-compose.yml # Postgres 16
|
|
487
|
+
└── shop/
|
|
488
|
+
├── .autogenerated/ # STACK LEVEL
|
|
489
|
+
│ └── docker-compose.app.autogenerated.yml # every service in the stack
|
|
490
|
+
├── orders-api/
|
|
491
|
+
│ ├── service.json # you write this
|
|
492
|
+
│ └── .autogenerated/ # SERVICE LEVEL: 14 files
|
|
493
|
+
└── shop-web/
|
|
494
|
+
├── service.json # you write this
|
|
495
|
+
└── .autogenerated/ # SERVICE LEVEL: 18 files
|
|
291
496
|
```
|
|
292
497
|
|
|
293
|
-
|
|
498
|
+
The stack's Compose file is the part you would otherwise write by hand. For these two services it holds the image builds, environment, 33 Traefik routing labels, four networks, health checks, and CPU and memory limits. An excerpt:
|
|
499
|
+
|
|
500
|
+
```yaml
|
|
501
|
+
orders-api:
|
|
502
|
+
environment:
|
|
503
|
+
- DATABASE_URL=postgresql://my_shop:${DB_PASSWORD}@my_shop_postgres:5432/my_shop_shop?schema=public
|
|
504
|
+
- JWT_SECRET=${JWT_SECRET:?JWT_SECRET is not set. Run `flisk up` ...}
|
|
505
|
+
labels:
|
|
506
|
+
- "traefik.http.routers.orders-api-project.rule=Host(`api.my-shop.localhost`) && PathPrefix(`/api/orders`)"
|
|
507
|
+
- "traefik.http.middlewares.orders-api-strip-prefix-project.stripprefix.prefixes=/api/orders"
|
|
508
|
+
- "traefik.http.services.orders-api.loadbalancer.healthcheck.path=/health"
|
|
509
|
+
healthcheck:
|
|
510
|
+
test: ["CMD", "curl", "-f", "--max-time", "5", "http://localhost:4000/health"]
|
|
511
|
+
```
|
|
294
512
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
513
|
+
Secrets come from the project `.env` by default: `flisk project` generates a random database password and JWT secret, and `.env` is added to `.gitignore`. Set `FLISK_SECRET_PROVIDER=infisical` to read secrets from [Infisical](https://infisical.com/) instead ([environment](docs/environment.md)).
|
|
514
|
+
|
|
515
|
+
<details>
|
|
516
|
+
<summary>Every file in each service's <code>.autogenerated/</code> folder</summary>
|
|
517
|
+
|
|
518
|
+
```text
|
|
519
|
+
shop-web/.autogenerated/
|
|
520
|
+
├── Dockerfile.app.autogenerated # app image
|
|
521
|
+
├── Dockerfile.app.autogenerated.dockerignore # build context
|
|
522
|
+
├── nginx.autogenerated.conf # serves the build, routes API requests
|
|
523
|
+
├── vite.config.frontend.autogenerated.ts # dev server
|
|
524
|
+
├── vite.config.build.autogenerated.ts # production build
|
|
525
|
+
├── tsconfig.autogenerated.json # TypeScript, host
|
|
526
|
+
├── tsconfig.docker.autogenerated.json # TypeScript, container
|
|
527
|
+
├── .npmrc.autogenerated # package registry, host
|
|
528
|
+
├── .npmrc.docker.autogenerated # package registry, container
|
|
529
|
+
├── bunfig.autogenerated.toml # Bun settings, host
|
|
530
|
+
├── bunfig.docker.autogenerated.toml # Bun settings, container
|
|
531
|
+
├── .env.frontend.autogenerated # frontend environment
|
|
532
|
+
├── env.ts # API URL for your imports
|
|
533
|
+
├── api-client.ts # client for the frontend's API route
|
|
534
|
+
├── api-index.ts # re-exports the client and URL
|
|
535
|
+
├── service.yaml # Tilt's projection of service.json
|
|
536
|
+
├── validation-report.autogenerated.json # preflight validation result
|
|
537
|
+
├── AGENTS.md # tells coding agents not to edit here
|
|
538
|
+
└── .flisk-contract/ # snapshots for drift checks
|
|
539
|
+
```
|
|
540
|
+
|
|
541
|
+
```text
|
|
542
|
+
orders-api/.autogenerated/
|
|
543
|
+
├── Dockerfile.app.autogenerated # app image
|
|
544
|
+
├── Dockerfile.app.autogenerated.dockerignore # build context
|
|
545
|
+
├── vite.config.backend.autogenerated.ts # server build
|
|
546
|
+
├── prisma.config.autogenerated.ts # database client
|
|
547
|
+
├── tsconfig.autogenerated.json # TypeScript, host
|
|
548
|
+
├── tsconfig.docker.autogenerated.json # TypeScript, container
|
|
549
|
+
├── .npmrc.autogenerated # package registry, host
|
|
550
|
+
├── .npmrc.docker.autogenerated # package registry, container
|
|
551
|
+
├── bunfig.autogenerated.toml # Bun settings, host
|
|
552
|
+
├── bunfig.docker.autogenerated.toml # Bun settings, container
|
|
553
|
+
├── .env.backend.autogenerated # backend environment
|
|
554
|
+
├── service.yaml # Tilt's projection of service.json
|
|
555
|
+
├── validation-report.autogenerated.json # preflight validation result
|
|
556
|
+
├── AGENTS.md # tells coding agents not to edit here
|
|
557
|
+
└── .flisk-contract/ # snapshots for drift checks
|
|
558
|
+
```
|
|
559
|
+
|
|
560
|
+
A stack with a database migrator also gets `docker-compose.migrator.autogenerated.yml` in the stack folder, and the migrator gets its own `Dockerfile.migrator.autogenerated`.
|
|
561
|
+
|
|
562
|
+
</details>
|
|
563
|
+
|
|
564
|
+
You never write an nginx config, a Dockerfile, a Compose file, or Traefik labels for this stack. `flisk up` regenerates these files when `service.json` changes and refuses to start if one was edited by hand. Python, Go, and Rust services, and optional features such as Playwright, get their own sets; the [generated-files guide](docs/generated-files.md) lists them and explains the drift checks.
|
|
298
565
|
|
|
299
566
|
If Helm, Compose, or your existing Tilt setup already gives you a working local environment, keep using it. Flisk CLI is for engineers managing several services who want a clear local service contract and one command to start the stack.
|
|
300
567
|
|
|
@@ -305,7 +572,8 @@ See [how Flisk compares to alternative dev tools](docs/comparison.md), [how Flis
|
|
|
305
572
|
Use `flisk ui` to inspect stacks and resources. Arrow keys or `j`/`k` move the
|
|
306
573
|
selection; `g`/`G` or Home/End jump to the first/last item, and PageUp/PageDown
|
|
307
574
|
move one visible page. `/` searches; navigation letters remain search text
|
|
308
|
-
while searching.
|
|
575
|
+
while searching. Press `1`–`5` to jump between tabs. The selected row stays
|
|
576
|
+
visible when the terminal is resized. See [docs/ui.md](docs/ui.md) for every key binding.
|
|
309
577
|
|
|
310
578
|
## Update Flisk
|
|
311
579
|
|
|
@@ -332,7 +600,7 @@ Runnable examples show Flisk on real stacks. Start with the smallest one:
|
|
|
332
600
|
|
|
333
601
|
## Use Flisk with your AI agent
|
|
334
602
|
|
|
335
|
-
The repository ships agent skills for common Flisk work
|
|
603
|
+
The repository ships five agent skills for common Flisk work under [`.agents/skills`](.agents/skills): `flisk-doctor` (environment checks), `flisk-up` (preview and start a stack), `flisk-resource` (create a service), `flisk-status` (health and URLs), and `flisk-troubleshoot` (fixing `flisk` and Tilt errors). Agents working in this repo also follow [AGENTS.md](AGENTS.md). Use these skills to let your agent check your setup and explain failures instead of guessing at Docker or Tilt configuration.
|
|
336
604
|
|
|
337
605
|
## Installation
|
|
338
606
|
|
|
@@ -359,6 +627,7 @@ Set `FLISK_DEBUG=1` before running `flisk up --verbose` to include Starlark debu
|
|
|
359
627
|
|
|
360
628
|
## Docs
|
|
361
629
|
|
|
630
|
+
- [Flisk 101: a 13-lab course for beginners](docs/101/README.md)
|
|
362
631
|
- [CLI command cheat sheet](cli/README.md#cheat-sheet)
|
|
363
632
|
- [Mega cheat sheet: every command and flag](docs/cheat-sheet.md)
|
|
364
633
|
- [Documentation index](docs/README.md)
|
|
@@ -403,7 +672,7 @@ published on 21 September 2026. Those dates describe the current repository and
|
|
|
403
672
|
|
|
404
673
|
## Requirements and support
|
|
405
674
|
|
|
406
|
-
For the local runtime, install Docker (Desktop, OrbStack, or Colima; Engine 25+, Compose 2.20.2+) and [Tilt](https://docs.tilt.dev/install.html). Bun 1.2+ is used by the default generated services. Flisk selects host ports from bounded fallback ranges for HTTP, HTTPS, and Postgres; set `FLISK_HTTP_PORT`, `FLISK_HTTPS_PORT`, or `FLISK_POSTGRES_PORT` to override them. Dev ports listen on `127.0.0.1` only, so other machines on your network cannot reach them. Set `FLISK_BIND_ADDRESS` (for example `0.0.0.0`, to test from a phone) to change that; `flisk doctor` warns when it is a wildcard address. Flisk supports macOS, Linux, and Windows through WSL2 Ubuntu
|
|
675
|
+
For the local runtime, install Docker (Desktop, OrbStack, or Colima; Engine 25+, Compose 2.20.2+) and [Tilt](https://docs.tilt.dev/install.html). Bun 1.2+ is used by the default generated services. Flisk selects host ports from bounded fallback ranges for HTTP, HTTPS, and Postgres; set `FLISK_HTTP_PORT`, `FLISK_HTTPS_PORT`, or `FLISK_POSTGRES_PORT` to override them. Dev ports listen on `127.0.0.1` only, so other machines on your network cannot reach them. Set `FLISK_BIND_ADDRESS` (for example `0.0.0.0`, to test from a phone) to change that; `flisk doctor` warns when it is a wildcard address. Flisk supports macOS, Linux, and **Windows through WSL2 Ubuntu**; native Windows supports CLI inspection only (`flisk --version`, `flisk doctor`, `flisk up --dry-run`). `flisk up` exits with a clear refusal pointing to WSL2. See the **[Windows & WSL2 guide](docs/wsl2.md)** for the recommended setup, prerequisites, verification steps, and troubleshooting.
|
|
407
676
|
|
|
408
677
|
On native Windows, `flisk --version`, `flisk doctor`, and `flisk up --dry-run` are inspect-only commands. `flisk up` exits 1 with “Landscape startup needs Ubuntu on WSL2. Native Windows is inspect-only.”
|
|
409
678
|
|
|
@@ -444,7 +713,7 @@ No. Core CLI is MIT and needs no key to run `flisk up`. Premium extras are optio
|
|
|
444
713
|
<details>
|
|
445
714
|
<summary><strong>Which platforms are supported?</strong></summary>
|
|
446
715
|
|
|
447
|
-
macOS and Linux are supported directly. Windows is supported through WSL2 Ubuntu; native Windows supports CLI inspection only (`flisk --version`, `flisk doctor`,
|
|
716
|
+
macOS and Linux are supported directly. Windows is supported through WSL2 Ubuntu; native Windows supports CLI inspection only (`flisk --version`, `flisk doctor`, `flisk up --dry-run`). See [Requirements and support](#requirements-and-support) and the **[Windows & WSL2 guide](docs/wsl2.md)** for the recommended setup, prerequisites, verification steps, and troubleshooting.
|
|
448
717
|
|
|
449
718
|
</details>
|
|
450
719
|
|
|
@@ -477,8 +746,68 @@ Then run `flisk doctor` and retry the same task. If the problem persists, [open
|
|
|
477
746
|
|
|
478
747
|
## Contributing and license
|
|
479
748
|
|
|
480
|
-
Contributions are welcome.
|
|
749
|
+
Contributions are welcome. **First step: [say hello on Discord](https://discord.gg/Sjhb3tnq3)**, tell us what you want to work on, and we will point you to a good first task. Then start with [CONTRIBUTING.md](.github/CONTRIBUTING.md) and the [contributor guide](docs/contributing/README.md). For the project structure, see the [architecture and repository map](docs/project-overview.md). To review pull requests, see [Review a pull request](docs/contributing/04-review-a-pr.md). Report security issues using [SECURITY.md](.github/SECURITY.md).
|
|
750
|
+
|
|
751
|
+
### Contributors
|
|
752
|
+
|
|
753
|
+
Thank you to everyone who has shipped code, docs, and fixes to Flisk since July 2026. Every merged change makes the local stack better for the next developer.
|
|
754
|
+
|
|
755
|
+
<table>
|
|
756
|
+
<tr>
|
|
757
|
+
<td align="center"><a href="https://github.com/kburym"><img src="https://github.com/kburym.png?size=80" width="64" alt="kburym" /><br /><sub><b>kburym</b></sub></a></td>
|
|
758
|
+
<td align="center"><a href="https://github.com/odykyi"><img src="https://github.com/odykyi.png?size=80" width="64" alt="odykyi" /><br /><sub><b>odykyi</b></sub></a></td>
|
|
759
|
+
<td align="center"><a href="https://github.com/sb123sb123"><img src="https://github.com/sb123sb123.png?size=80" width="64" alt="sb123sb123" /><br /><sub><b>sb123sb123</b></sub></a></td>
|
|
760
|
+
<td align="center"><a href="https://github.com/AK-Lmn"><img src="https://github.com/AK-Lmn.png?size=80" width="64" alt="AK-Lmn" /><br /><sub><b>AK-Lmn</b></sub></a></td>
|
|
761
|
+
<td align="center"><a href="https://github.com/yoreva-01"><img src="https://github.com/yoreva-01.png?size=80" width="64" alt="yoreva-01" /><br /><sub><b>yoreva-01</b></sub></a></td>
|
|
762
|
+
<td align="center"><a href="https://github.com/minutechreview"><img src="https://github.com/minutechreview.png?size=80" width="64" alt="minutechreview" /><br /><sub><b>minutechreview</b></sub></a></td>
|
|
763
|
+
</tr>
|
|
764
|
+
<tr>
|
|
765
|
+
<td align="center"><a href="https://github.com/Delfi2007"><img src="https://github.com/Delfi2007.png?size=80" width="64" alt="Delfi2007" /><br /><sub><b>Delfi2007</b></sub></a></td>
|
|
766
|
+
<td align="center"><a href="https://github.com/Ghifariezra"><img src="https://github.com/Ghifariezra.png?size=80" width="64" alt="Ghifariezra" /><br /><sub><b>Ghifariezra</b></sub></a></td>
|
|
767
|
+
<td align="center"><a href="https://github.com/Huang-404-Q"><img src="https://github.com/Huang-404-Q.png?size=80" width="64" alt="Huang-404-Q" /><br /><sub><b>Huang-404-Q</b></sub></a></td>
|
|
768
|
+
<td align="center"><a href="https://github.com/dbdefault"><img src="https://github.com/dbdefault.png?size=80" width="64" alt="dbdefault" /><br /><sub><b>dbdefault</b></sub></a></td>
|
|
769
|
+
<td align="center"><a href="https://github.com/Rohith-Saran"><img src="https://github.com/Rohith-Saran.png?size=80" width="64" alt="Rohith-Saran" /><br /><sub><b>Rohith-Saran</b></sub></a></td>
|
|
770
|
+
<td align="center"><a href="https://github.com/aazminu"><img src="https://github.com/aazminu.png?size=80" width="64" alt="aazminu" /><br /><sub><b>aazminu</b></sub></a></td>
|
|
771
|
+
</tr>
|
|
772
|
+
<tr>
|
|
773
|
+
<td align="center"><a href="https://github.com/xiehuanyi"><img src="https://github.com/xiehuanyi.png?size=80" width="64" alt="xiehuanyi" /><br /><sub><b>xiehuanyi</b></sub></a></td>
|
|
774
|
+
<td align="center"><a href="https://github.com/NimoCao"><img src="https://github.com/NimoCao.png?size=80" width="64" alt="NimoCao" /><br /><sub><b>NimoCao</b></sub></a></td>
|
|
775
|
+
<td align="center"><a href="https://github.com/rahul05ranjan"><img src="https://github.com/rahul05ranjan.png?size=80" width="64" alt="rahul05ranjan" /><br /><sub><b>rahul05ranjan</b></sub></a></td>
|
|
776
|
+
<td align="center"><a href="https://github.com/krishna2707"><img src="https://github.com/krishna2707.png?size=80" width="64" alt="krishna2707" /><br /><sub><b>krishna2707</b></sub></a></td>
|
|
777
|
+
<td align="center"><a href="https://github.com/arxh80"><img src="https://github.com/arxh80.png?size=80" width="64" alt="arxh80" /><br /><sub><b>arxh80</b></sub></a></td>
|
|
778
|
+
<td align="center"><a href="https://github.com/tnalbant"><img src="https://github.com/tnalbant.png?size=80" width="64" alt="tnalbant" /><br /><sub><b>tnalbant</b></sub></a></td>
|
|
779
|
+
</tr>
|
|
780
|
+
<tr>
|
|
781
|
+
<td align="center"><a href="https://github.com/sunny-kavixo"><img src="https://github.com/sunny-kavixo.png?size=80" width="64" alt="sunny-kavixo" /><br /><sub><b>sunny-kavixo</b></sub></a></td>
|
|
782
|
+
<td align="center"><a href="https://github.com/sohammkk"><img src="https://github.com/sohammkk.png?size=80" width="64" alt="sohammkk" /><br /><sub><b>sohammkk</b></sub></a></td>
|
|
783
|
+
<td align="center"><a href="https://github.com/sinhaananya812-star"><img src="https://github.com/sinhaananya812-star.png?size=80" width="64" alt="sinhaananya812-star" /><br /><sub><b>sinhaananya812-star</b></sub></a></td>
|
|
784
|
+
<td align="center"><a href="https://github.com/jay23606"><img src="https://github.com/jay23606.png?size=80" width="64" alt="jay23606" /><br /><sub><b>jay23606</b></sub></a></td>
|
|
785
|
+
<td align="center"><a href="https://github.com/floatyserve"><img src="https://github.com/floatyserve.png?size=80" width="64" alt="floatyserve" /><br /><sub><b>floatyserve</b></sub></a></td>
|
|
786
|
+
<td align="center"><a href="https://github.com/eddyflores100-lang"><img src="https://github.com/eddyflores100-lang.png?size=80" width="64" alt="eddyflores100-lang" /><br /><sub><b>eddyflores100-lang</b></sub></a></td>
|
|
787
|
+
</tr>
|
|
788
|
+
<tr>
|
|
789
|
+
<td align="center"><a href="https://github.com/denisvmedia"><img src="https://github.com/denisvmedia.png?size=80" width="64" alt="denisvmedia" /><br /><sub><b>denisvmedia</b></sub></a></td>
|
|
790
|
+
<td align="center"><a href="https://github.com/amritkang165"><img src="https://github.com/amritkang165.png?size=80" width="64" alt="amritkang165" /><br /><sub><b>amritkang165</b></sub></a></td>
|
|
791
|
+
<td align="center"><a href="https://github.com/airdropia"><img src="https://github.com/airdropia.png?size=80" width="64" alt="airdropia" /><br /><sub><b>airdropia</b></sub></a></td>
|
|
792
|
+
<td align="center"><a href="https://github.com/adity982"><img src="https://github.com/adity982.png?size=80" width="64" alt="adity982" /><br /><sub><b>adity982</b></sub></a></td>
|
|
793
|
+
<td align="center"><a href="https://github.com/YuuGR1337"><img src="https://github.com/YuuGR1337.png?size=80" width="64" alt="YuuGR1337" /><br /><sub><b>YuuGR1337</b></sub></a></td>
|
|
794
|
+
<td align="center"><a href="https://github.com/WilsonSoetomo"><img src="https://github.com/WilsonSoetomo.png?size=80" width="64" alt="WilsonSoetomo" /><br /><sub><b>WilsonSoetomo</b></sub></a></td>
|
|
795
|
+
</tr>
|
|
796
|
+
<tr>
|
|
797
|
+
<td align="center"><a href="https://github.com/Vignesh2662006"><img src="https://github.com/Vignesh2662006.png?size=80" width="64" alt="Vignesh2662006" /><br /><sub><b>Vignesh2662006</b></sub></a></td>
|
|
798
|
+
<td align="center"><a href="https://github.com/Samueldavidddsc"><img src="https://github.com/Samueldavidddsc.png?size=80" width="64" alt="Samueldavidddsc" /><br /><sub><b>Samueldavidddsc</b></sub></a></td>
|
|
799
|
+
<td align="center"><a href="https://github.com/Murphyvon"><img src="https://github.com/Murphyvon.png?size=80" width="64" alt="Murphyvon" /><br /><sub><b>Murphyvon</b></sub></a></td>
|
|
800
|
+
<td align="center"><a href="https://github.com/KeuqS"><img src="https://github.com/KeuqS.png?size=80" width="64" alt="KeuqS" /><br /><sub><b>KeuqS</b></sub></a></td>
|
|
801
|
+
<td align="center"><a href="https://github.com/Golden007-prog"><img src="https://github.com/Golden007-prog.png?size=80" width="64" alt="Golden007-prog" /><br /><sub><b>Golden007-prog</b></sub></a></td>
|
|
802
|
+
<td align="center"><a href="https://github.com/GeoCeff"><img src="https://github.com/GeoCeff.png?size=80" width="64" alt="GeoCeff" /><br /><sub><b>GeoCeff</b></sub></a></td>
|
|
803
|
+
</tr>
|
|
804
|
+
<tr>
|
|
805
|
+
<td align="center"><a href="https://github.com/Enard52"><img src="https://github.com/Enard52.png?size=80" width="64" alt="Enard52" /><br /><sub><b>Enard52</b></sub></a></td>
|
|
806
|
+
</tr>
|
|
807
|
+
</table>
|
|
481
808
|
|
|
482
809
|
Flisk is MIT-licensed; see [LICENSE](LICENSE). The [license boundary](docs/project/GOVERNANCE.md#license-boundary-and-donation-scope) says which code is MIT and which is downloaded with a key.
|
|
483
810
|
|
|
484
811
|
Project governance: [GOVERNANCE.md](docs/project/GOVERNANCE.md), [MAINTAINERS.md](docs/project/MAINTAINERS.md), [ADOPTERS.md](docs/project/ADOPTERS.md).
|
|
812
|
+
|
|
813
|
+
<img src='https://raw.githubusercontent.com/flisk-sh/flisk-emoji/main/png/flisk-thunder-64.png' width='20' alt='flisk'> Using Flisk in Slack or Discord? Get the [Flisk green thunder emoji](https://github.com/flisk-sh/flisk-emoji) (SVG and PNG, MIT).
|