diff --git a/.cursor/rules/backend-daemon-panel-standards.mdc b/.cursor/rules/backend-daemon-panel-standards.mdc
new file mode 100644
index 000000000..0ea74eafc
--- /dev/null
+++ b/.cursor/rules/backend-daemon-panel-standards.mdc
@@ -0,0 +1,23 @@
+---
+description: Backend development conventions
+globs: daemon/src/**/*.ts, panel/src/**/*.ts,
+alwaysApply: false
+---
+
+# Backend directory structure
+
+Folder names under `daemon/src/*` and `panel/src/app/*` define the layers: route, middleware, service, instance, etc.
+
+# Logging and exceptions
+
+- Use the project **logger** (not raw `console.*`). Use `info` or `error` by context.
+- For external resources (files, network, containers, shell): validate inputs and boundaries; on failure log and rethrow or return a clear result. Do not swallow exceptions.
+
+# Security checks
+
+- For container/command logic: strictly parse and validate config (length, format). Do not pass unvalidated input into command args or config fields.
+- When running shell commands or reading files, if arguments come from the frontend, validate them for security risks.
+
+# Memory and leaks
+
+- For new Maps, queues, Buffer, arrays, etc., add corresponding cleanup/release logic to avoid memory leaks.
diff --git a/.cursor/rules/core-project-conventions.mdc b/.cursor/rules/core-project-conventions.mdc
new file mode 100644
index 000000000..aa9b19be1
--- /dev/null
+++ b/.cursor/rules/core-project-conventions.mdc
@@ -0,0 +1,52 @@
+---
+description: Project development conventions
+alwaysApply: true
+---
+
+# Project structure
+
+The codebase is split into: `web backend (panel/*.*)`, `daemon/node (daemon/*.*)`, and `web frontend (frontend/*.*)`.
+
+- **Daemon**: instance processes, containers, files, and terminal management.
+- **Web backend**: user management, node connections, auth, and API.
+- **Web frontend**: UI, backend communication; some features talk to the daemon directly to reduce load.
+
+# Code requirements
+
+- Prefer **minimal changes**. Before coding, check `hooks/services/stores/utils` in the relevant subproject to avoid duplicate logic.
+- All comments and all code must be written in English. If there are any non-English strings, you must use the i18n convention.
+- Do **not** hardcode user-facing text (UI copy or error messages). Use the project i18n flow (backend logs excepted).
+- Code must be **high cohesion, low coupling, reusable**.
+
+# i18n conventions
+
+- **Frontend**: use `t()` from `@/lang/i18n` for all translatable text.
+- **Backend**: use `$t()` (e.g. from `daemon/src/i18n/index.ts`) for all user-facing text and error messages.
+- Store source strings as accurate, short, correct English in `languages/en_us.json`; other locales are added separately.
+
+## i18n parameterized strings
+
+> Frontend and backend use different placeholder syntax. Keys must use the `TXT_CODE` prefix.
+
+```json
+{
+ "TXT_CODE_FILE_ERROR": "File {name} error!",
+ "TXT_CODE_INSTANCE_ERROR": "Exception instance {{uuid}}: {{err}}"
+}
+```
+
+- **Frontend**: one pair of braces `{name}`.
+- **Web backend / Daemon**: two pairs `{{uuid}}`, `{{err}}`.
+
+```vue
+
+{{ t("TXT_CODE_FILE_ERROR", { name: props.fileName }) }}
+```
+
+```ts
+// Backend, with parameters
+const errorMsgWithParams = $t("TXT_CODE_INSTANCE_ERROR", {
+ uuid: instance.instanceUuid,
+ err: err
+});
+```
diff --git a/.cursor/rules/frontend-vue-component-standards.mdc b/.cursor/rules/frontend-vue-component-standards.mdc
new file mode 100644
index 000000000..abb5bd5ea
--- /dev/null
+++ b/.cursor/rules/frontend-vue-component-standards.mdc
@@ -0,0 +1,12 @@
+---
+description: Frontend (Vue 3) development conventions
+globs: frontend/src/**/*.vue
+alwaysApply: false
+---
+
+# Vue component conventions
+
+- Use **Vue 3**. Components must use `