This PR adds a new Construct AI assistant template. The Docker Compose file and meta.json entry follow all repository conventions, and the incidental removal of a duplicate Strapi entry in meta.json is a legitimate deduplication by dedupe-and-sort-meta.js.
P1 — broken deploy: The api_key variable in template.toml uses a password-generation helper, so API_KEY is set to a randomly generated string instead of the user's real OpenRouter credential. Every LLM call will fail with an auth error. Other external-key templates in this repo (e.g. bolt.diy, anse) leave this field empty to prompt the deployer to supply their own key.
Confidence Score: 3/5
Not safe to merge as-is — the API key misconfiguration will produce a broken deployment for all users.
Single P1 finding: the template auto-generates a random value for the OpenRouter API key, guaranteeing every LLM call fails. The rest of the template is well-formed and follows all conventions.
blueprints/construct/template.toml — the api_key variable on line 3 must be changed from the password generator to an empty string.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/Dokploy/templates/pull/827
**Author:** [@kaveone](https://github.com/kaveone)
**Created:** 4/28/2026
**Status:** 🔄 Open
**Base:** `main` ← **Head:** `construct/update-v2026.4.29`
---
### 📝 Commits (1)
- [`6653e73`](https://github.com/Dokploy/templates/commit/6653e73a396e88e8f2fb09d001fef8b9260fdf81) feat: add/update Construct template (v2026.4.29)
### 📊 Changes
**4 files changed** (+49 additions, -18 deletions)
<details>
<summary>View changed files</summary>
➕ `blueprints/construct/construct.png` (+0 -0)
➕ `blueprints/construct/docker-compose.yml` (+16 -0)
➕ `blueprints/construct/template.toml` (+17 -0)
📝 `meta.json` (+16 -18)
</details>
### 📄 Description
## Summary
- Adds/updates Construct template to v${VERSION}
- Image: `ghcr.io/kumihoio/construct-os:${VERSION}`
- Construct is a fast, small, fully autonomous AI personal assistant (100% Rust)
- Multi-arch: linux/amd64 + linux/arm64
## Checklist
- [x] Read README.md suggestions
- [x] Tested template in personal Dokploy instance
- [x] Confirmed all requirements met
## Testing
- Deployed via Compose service import
- Service starts and gateway is accessible on port 42617
- Health check passes
## Links
- https://github.com/KumihoIO/construct-os
- https://github.com/orgs/KumihoIO/packages/container/package/construct
<!-- greptile_comment -->
<h3>Greptile Summary</h3>
This PR adds a new Construct AI assistant template. The Docker Compose file and meta.json entry follow all repository conventions, and the incidental removal of a duplicate Strapi entry in `meta.json` is a legitimate deduplication by `dedupe-and-sort-meta.js`.
- **P1 — broken deploy**: The `api_key` variable in `template.toml` uses a password-generation helper, so `API_KEY` is set to a randomly generated string instead of the user's real OpenRouter credential. Every LLM call will fail with an auth error. Other external-key templates in this repo (e.g. `bolt.diy`, `anse`) leave this field empty to prompt the deployer to supply their own key.
<h3>Confidence Score: 3/5</h3>
Not safe to merge as-is — the API key misconfiguration will produce a broken deployment for all users.
Single P1 finding: the template auto-generates a random value for the OpenRouter API key, guaranteeing every LLM call fails. The rest of the template is well-formed and follows all conventions.
blueprints/construct/template.toml — the api_key variable on line 3 must be changed from the password generator to an empty string.
<sub>Reviews (1): Last reviewed commit: ["feat: add/update Construct template (v20..."](https://github.com/dokploy/templates/commit/6653e73a396e88e8f2fb09d001fef8b9260fdf81) | [Re-trigger Greptile](https://app.greptile.com/api/retrigger?id=30026764)</sub>
> Greptile also left **1 inline comment** on this PR.
<!-- /greptile_comment -->
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/Dokploy/templates/pull/827
Author: @kaveone
Created: 4/28/2026
Status: 🔄 Open
Base:
main← Head:construct/update-v2026.4.29📝 Commits (1)
6653e73feat: add/update Construct template (v2026.4.29)📊 Changes
4 files changed (+49 additions, -18 deletions)
View changed files
➕
blueprints/construct/construct.png(+0 -0)➕
blueprints/construct/docker-compose.yml(+16 -0)➕
blueprints/construct/template.toml(+17 -0)📝
meta.json(+16 -18)📄 Description
Summary
ghcr.io/kumihoio/construct-os:${VERSION}Checklist
Testing
Links
Greptile Summary
This PR adds a new Construct AI assistant template. The Docker Compose file and meta.json entry follow all repository conventions, and the incidental removal of a duplicate Strapi entry in
meta.jsonis a legitimate deduplication bydedupe-and-sort-meta.js.api_keyvariable intemplate.tomluses a password-generation helper, soAPI_KEYis set to a randomly generated string instead of the user's real OpenRouter credential. Every LLM call will fail with an auth error. Other external-key templates in this repo (e.g.bolt.diy,anse) leave this field empty to prompt the deployer to supply their own key.Confidence Score: 3/5
Not safe to merge as-is — the API key misconfiguration will produce a broken deployment for all users.
Single P1 finding: the template auto-generates a random value for the OpenRouter API key, guaranteeing every LLM call fails. The rest of the template is well-formed and follows all conventions.
blueprints/construct/template.toml — the api_key variable on line 3 must be changed from the password generator to an empty string.
Reviews (1): Last reviewed commit: "feat: add/update Construct template (v20..." | Re-trigger Greptile
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.