Lấy project về máy
clone một website, hoặc tải bản zip từ AI agent; project có gì và cái gì không bao giờ rời server.
webmati clone
webmati clone my-shop
my-shop là slug của website (hoặc id). CLI tạo thư mục my-shop/ và kéo mọi
thứ về. Muốn đặt tên thư mục khác:
webmati clone my-shop shop-local
Thư mục phải chưa có hoặc đang trống. Nếu bạn đăng nhập nhiều nền tảng, thêm
--platform webmati.
Bản zip từ AI agent
Nếu bạn đang làm việc với AI qua MCP, hãy nói "tôi muốn làm website này trên
máy". Agent gọi tool init_local_project và đưa bạn:
- lệnh cài CLI cho máy bạn,
- lệnh đăng nhập và lệnh
clone, - một link zip của đúng project đó, dùng được trong 1 giờ.
Zip chứa y hệt cây thư mục mà clone tạo ra (kể cả trạng thái đồng bộ trong
.webmati/). Giải nén xong, đăng nhập một lần bên trong thư mục:
cd my-shop
webmati login --web
webmati status
login đọc nền tảng và website từ webmati.toml. status không báo thay đổi
nào nghĩa là project đã khớp server.
Link zip là chìa khoá
Ai có link cũng tải được project cho đến khi nó hết hạn (1 giờ). Zip không chứa key, giá trị secret hay media, nhưng có mã theme và workflow của bạn: đừng dán link vào nơi công khai.
Trong project có gì
| Đường dẫn | Là gì | Sửa được |
|---|---|---|
theme/ | file riêng của theme: layout, templates, sections, snippets, assets, config, locales | có |
theme/config/settings_data.json | giá trị cài đặt của theme (những gì customizer lưu) | có |
backend/workflows/<code>/workflow.json | tên và đồ thị nháp của một workflow | có |
backend/workflows/<code>/nodes/<id>.go | mã Go của một node code (giữ nguyên 2 dòng đầu) | có |
backend/tables/<code>.json, backend/routes.json, backend/variables.json | khai báo backend | có, chạy ngay (push --live) |
backend/secrets.json, backend/workers.json | tên secret, worker đã upload | chỉ đọc |
pages/<slug>.json | một trang (tiêu đề, meta, nội dung, sections — sections là nháp đến khi xuất bản) | có |
content/types/<code>.json | định nghĩa một content type | có, chạy ngay |
redirects.json | redirect của website, mỗi from_path một mục | có, chạy ngay |
wellknown/<name> (+ <name>.meta.json) | file phục vụ ở /.well-known/<name> | có, chạy ngay |
translations/<locale>.json | bản dịch, khoá <resource_type>/<resource_id>/<field> | có, chạy ngay |
.webmati/inherited/ | file theme kế thừa từ theme gốc, không phải của theme này | chỉ để tham khảo |
.webmati/conflicts/ | bản phía server khi có xung đột | đọc, rồi webmati resolve |
.webmati/state.json, .webmati/objects/ | sổ sách đồng bộ | đừng sửa |
.webmati/sdk/ | tài liệu từng tool cho agent (webmati sdk làm mới) | tự sinh |
.webmati/logs/ | nhật ký tool call và exec | tự sinh |
AGENTS.md, CLAUDE.md (cả trong theme/ và backend/) | playbook coding agent làm theo (mỗi CLAUDE.md trỏ sang AGENTS.md bên cạnh) | có |
.webmati/skills/ | các playbook của chính nền tảng, có index.md (webmati skills; pull cập nhật) | tự sinh |
.webmati/reference/ | tài liệu tra cứu: object Liquid, node workflow, gói wm, và section, template, loại nội dung, bảng dữ liệu, route của website này (bắt đầu từ index.md) | tự sinh |
webmati.toml | nền tảng, website, nơi push ghi vào (draft) — không có key | hiếm khi |
mọi thứ còn lại — app/, scripts/, docs/, backend/fixtures/, README… | file riêng của project: lưu cho nhóm, không bao giờ phục vụ ra ngoài (xem File riêng của project) | có |
.webmatiignore, mọi .gitignore | những gì không phải file của project (cú pháp gitignore): node_modules/, bản build, log, .env* | có |
Muốn sửa một file kế thừa: chép nó từ .webmati/inherited/<đường dẫn> sang
theme/<đường dẫn> rồi sửa bản chép. Xoá bản của bạn thì bản kế thừa lại có
hiệu lực.
Tên file trên Windows
Tên không hợp lệ trên mọi hệ điều hành được mã hoá: : thành ~3A (workflow
stripe:pay của một app nằm ở backend/workflows/stripe~3Apay/), tên dành riêng
của Windows như con được thêm ~ ở cuối. Hai đường dẫn chỉ khác chữ hoa/thường
bị từ chối ngay khi clone.
Dùng git
Project là một thư mục bình thường, git init được ngay. clone đã tạo sẵn
.gitignore (bỏ phần chỉ của riêng máy bạn: .webmati/objects/, logs/,
sdk/, skills/, reference/, conflicts/, và .webmati/secrets.json — nơi bạn có thể để giá trị
secret thật cho webmati test) và .gitattributes (* -text, để git không đổi
xuống dòng của file), cùng .webmatiignore. Khi chúng còn đúng nội dung mặc định
của CLI thì không được đồng bộ; bạn sửa một file thì nó thành file của project mà
cả nhóm dùng chung.
Cái gì không bao giờ được tải về
- Giá trị secret.
backend/secrets.jsonchỉ có tên. Đặt giá trị bằngwebmati tool call set_backend_secret --json '{"code":"STRIPE_KEY","value":"…"}'; giá trị không bao giờ đọc ngược lại được. - API key. Cả key của CLI lẫn API key của backend. Key của CLI nằm ở
~/.config/webmati/, không bao giờ trong project. - Media. Ảnh và file ở thư viện media; theme tham chiếu chúng bằng URL.
- Dữ liệu trong các bảng backend và người dùng cuối.
- Kết quả build và thư viện phụ thuộc —
node_modules/,dist/: chúng không bao giờ được gửi lên, nên không có gì để tải về.

