
Hostim
io.github.hostimdev由 GitHub 帳號 hostimdev 發布v0.1.56更新於 Nov 3, 2026
在歐盟雲託管平臺Hostim上部署和管理應用、資料庫、卷和網域。
AI 翻譯由 AI 模型根據下方的原文描述翻譯,可能有誤。
原文描述
Deploy and manage apps, databases, volumes and domains on Hostim, an EU cloud hosting platform.
概覽
Hostim 的本機 MCP 服務;無需登入;STDIO。
暫無 AI 概覽:以下資訊來自註冊中心條目和服務本身。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Hostim,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
hostim CLI
Command-line interface for the Hostim.dev cloud platform.
Create and manage projects, apps, databases (MySQL / Postgres / Redis), volumes
and domains from a terminal or a CI pipeline, over the public REST API at
https://api.hostim.dev.
An app can deploy from a local directory (uploaded and built from its
Dockerfile, or served as a static site), a git repository, or a Docker image.
A local directory needs no git remote and no registry:
hostim deploy web --source . --plan sa-1-1 --port 8080. See deploy.
This file is the complete manual. The binary carries the same text: run
hostim agent to print it to stdout, so an agent or a script can read the
whole manual without network access.
Commands, flags, output and API responses can change between releases. Check the release notes before you upgrade.
Contents
- Install
- Log in
- Configuration
- Global flags
- Output and exit codes
- Command reference
- Template files
- Deploy from CI
- Reporting problems
- Development
- License
Install
The script downloads the release binary for the current OS and architecture
(Linux and macOS, amd64 and arm64) and installs it into /usr/local/bin, using
sudo when that directory is not writable. When it is not writable and sudo
is not installed either — a plain container, for example — the script falls back
to ~/.local/bin and tells you if that directory is not on your PATH. Set
PREFIX to choose the location yourself:
Some agents and CI policies refuse to pipe a downloaded script into a shell. The script is not required. Use Homebrew (macOS and Linux):
Or npm (Node 18+). npx downloads the release binary for your platform on the
first run, checks it against the release checksums and caches it:
Or fetch the release binary directly:
Build from source instead (Go 1.26+):
Check the install:
Log in
hostim login uses a device code. It prints a URL and a short code, you approve
the request in the browser, and the token is saved automatically:
hostim login polls until you approve and saves the token itself, so there is
no need to write a waiting loop around it or to run it a second time. The
browser step does not need a terminal, so an agent can run hostim login and
show you the code. If you already have a token, store it directly instead —
create one in the dashboard at https://console.hostim.dev:
login validates the token against the API before saving it to
~/.config/hostim/config.yml (mode 0600). In CI, skip login and export
HOSTIM_TOKEN instead — no file is written.
Most commands act on one project. Set a default once:
Configuration
Values are resolved as flag → environment variable → config file, with a built-in default for the API URL.
The config file lives at ~/.config/hostim/config.yml, or
$XDG_CONFIG_HOME/hostim/config.yml when XDG_CONFIG_HOME is set:
Projects and apps can be named by name or by ID everywhere.
Global flags
Available on every command:
Destructive commands (rm, templates apply) ask for confirmation and take
-y / --yes to skip the prompt.
Output and exit codes
Default output is an aligned text table meant for a human. -o json switches
every command to machine output and is the right mode for scripts and agents:
- read commands print the API object or list as indented JSON;
- write commands print a single result object naming what happened, for example
{"status":"created","kind":"app","name":"web"}or{"status":"ok","kind":"env","set":1}; - failures print a JSON object on stderr, for example
{"status":"error","error":"..."}, and exit non-zero. When a command is short of several requirements, the object carries a"missing"array listing all of them at once.
Exit codes:
Command reference
Every example below is runnable as written once a token and a project are set.
login, logout, whoami, use
projects
--region is required on create; see hostim regions ls for the values.
projects export writes a desired-state template, not a backup: volume and
database contents (data) are not exported. That data is backed up on a
schedule anyway: Postgres and MySQL databases and volumes, see
backups (hostim backups). Costs, IDs, built-in domains and
unused source blocks are stripped, and env var values are exported RAW — the
file holds secrets (passwords, API keys), so store and share it like a
password file. Docker registry passwords and git tokens are not readable
through the API and are left out (registry usernames are kept); set them
again after applying.
Redeploy with hostim templates apply -f prod.yml --new-project prod-clone.
deploy
hostim deploy <app> creates the app when it does not exist (from --source,
--git or --docker-image) and otherwise updates its source and triggers a
rebuild. It waits for the build and exits non-zero if the build fails, so it
drops straight into a pipeline. hostim apps deploy is the same command.
Flags:
With --source . the directory is packed into a .tar.gz and uploaded before
the build. These paths are always left out: .git/, node_modules/ (at any
depth), .env and .env.* files (except .env.example, .env.sample and
.env.template). A .dockerignore at the directory root is applied too; the
Dockerfile and .dockerignore are always kept. Symlinked directories are not
followed, and a symlink is skipped when its target is outside the directory.
The archive is limited to 500 MiB after compression. The same files always give
the same archive hash, so an unchanged directory is not uploaded twice. The
platform keeps an uploaded archive for 7 days; after that, run the deploy with
--source <dir> again to re-upload it.
A directory with an index.html and no Dockerfile is a static site: the CLI
adds an nginx Dockerfile and config, so --port is not needed (the app listens
on 80). --static forces this mode when the directory has a Dockerfile (Jekyll
copies one into _site); the directory's own Dockerfile and .dockerignore
are then ignored. In static mode every file in the directory is uploaded, even
inside a git work tree whose .gitignore lists the build folder. The nginx
config serves /about from about.html or about/index.html, uses the site's
404.html, gzips text, and caches /_astro/, /_next/static/ and /assets/
for a year. On success the deploy prints the app's URL.
Plan IDs are per resource kind and look like sa-1-1 (shared app, 1 core, 1 GB
RAM). List the ones a region offers with hostim regions pricing <region> --for apps.
deploy handles one app. An app that also needs a database, a Redis or a
volume is deployed as a template — see templates.
apps
status, logs, events, overview
status shows the current value; events shows how it got there, which is
where to look when an app went unhealthy and came back. --build works for apps
built from git; an app that runs a prebuilt docker image has no build logs.
env
Environment variables belong either to one app (-a/--app) or to the whole
project (--global). Apps see the global set plus their own.
Changing environment variables restarts the app.
To reach another app in the same project, use its internal DNS name
app-<name>-service on its HTTP port, for example
API_URL=http://app-api-service:8080. hostim status <app> shows it as
"Internal DNS". Apps without an HTTP port have none.
Values can reference database variables with $(...), also inside a longer
value such as a DSN. They are expanded at container start, so hostim env get
shows the literal text. See Placeholders in envVars
for every variable name.
domain
Add the printed record at the DNS provider, then re-run hostim domain status
until it reports the domain as active; the certificate is issued automatically.
exec
Runs a command inside an app's container, or opens an interactive shell when no
command is given. The connection goes through the project's SSH bastion, so the
project has to authorize your public SSH key. The first hostim exec against a
project offers to add the key for you; pass -y to add it without the prompt,
which is what a script or a CI job needs.
Aliases: shell, ssh. The exit status of the remote command becomes the exit
status of hostim exec.
db
Three engines, the same command shape: hostim db mysql|postgres|redis ls|get|create|credentials|status|rm. pg is an alias for postgres.
--plan is required on create. Plan IDs differ per engine — sp-* for
Postgres, sm-* for MySQL, sr-* for Redis — and hostim regions pricing <region> --for postgres|mysql|redis lists them with their storage and price.
Postgres extensions:
Load a plain-SQL dump (pg_dump --format=plain). It goes through the project's
SSH bastion into psql. SQL errors are printed and counted but do not stop the
import, because dumps from other hosts carry a few harmless ones (event
triggers, extension owners, unknown settings). It exits non-zero only when psql
cannot run the dump at all, for example when it cannot connect. Like exec, it
offers to authorize your SSH key; -y adds it without asking.
Read the credentials into an app's environment in one step:
volumes
The plan sets the size (vol-1 is 5 GB); list plans with hostim regions pricing <region> --for volume.
Mount a volume on an app with hostim deploy <app> --volume data:/var/lib/app.
backups
hostim backups lists every database and volume with the time of its last
backup, then the schedule and the retention policy. Times are in your local
time zone. hostim backups create starts a manual backup; without a resource
it backs up the whole project. --wait polls until the run finishes and exits
non-zero if it did not succeed. hostim backups ls shows the size of the data
before compression;
the downloaded file is smaller. hostim backups ls needs
the resource name; if a database and a volume share a name, pass
--kind postgres|mysql|volume. hostim backups download --latest <resource>
skips the ID lookup and takes the newest backup. hostim backups download prepares the file
first, which can take minutes for a large backup, then downloads it. If the
transfer is interrupted, run the same command again: it resumes from the partial
<file>.part on disk. -f - writes to stdout and cannot resume.
Downloads are compressed with zstd. A database backup is a .sql.zst file
(unpack with zstd -d <file>), a volume backup a .tar.zst archive (unpack
with tar --zstd -xf <file>; it unpacks into a folder named after the volume).
templates
A template is one YAML description of a whole stack — volumes, databases, Redis
and apps — that apply creates in dependency order, waiting for each resource.
apply prints the resources it will create and asks for confirmation
(-y skips it). If any resource already exists in the target project it aborts
before creating anything, so it never overwrites a configured or scaled
resource; --skip-existing creates only what is missing.
Custom domains from the template are attached only after all resources are up:
a domain already held by another project (for example the project a template
was exported from) is reported per-domain and the rest of the apply still
succeeds — add it later with hostim domain add <domain> --app <app>.
Flags for apply:
regions
Use this to find valid --plan and --region values before creating anything.
completion
agent
The binary embeds this README, so the manual an agent reads is exactly the manual shipped with the installed version. Feed it to a coding agent before it writes Hostim commands, and the agent stops guessing flags.
For agents that load skills (Claude Code and others), the same knowledge ships
as a skill: skills/hostim/SKILL.md. Put it at
.claude/skills/hostim/SKILL.md in your repository, or let the installer do it:
That installs the CLI, writes the skill and points AGENTS.md at it.
mcp
hostim mcp speaks the Model Context Protocol on stdin/stdout, so a coding
agent can inspect and provision Hostim resources as tools. It is the same
binary, the same token and the same public API as every other command.
Read-only tools are always available: list_projects, list_apps, get_app,
get_app_status, get_app_logs, get_app_events, list_databases,
get_database_credentials, list_volumes, list_backups, list_regions,
list_templates and list_region_plans. Tools that create, change or delete
anything — projects, apps, databases, volumes, env vars, domains, backups and
backup downloads — are only registered with --allow-write. create_app can
also upload a local directory with source.type: upload, and
deploy_app_source re-uploads one for an existing upload app.
Point an MCP client at it. For Claude Desktop, in
claude_desktop_config.json:
Cursor, VS Code and other MCP clients use the same command + args shape.
Claude Desktop can also install it without the CLI: download
hostim.mcpb
from the latest release and open it. Claude Desktop asks for the token and
whether to allow changes.
Because the token comes from the same place as every other command, you can
also leave env out and rely on hostim login's saved token.
version
Template files
A template file is either one template object or a list of them. Field names match the API's JSON (camelCase). Minimal example:
A git-based app uses this source instead:
An upload-based app points at a local directory, relative to the template file:
path is a CLI-only field: apply uploads that directory and sends only the
archive hash to the API. hostim templates validate -f <file> checks names,
plans, upload paths and Dockerfiles offline, before any resource is created.
Placeholders in envVars
Two kinds of placeholder are resolved for you, so a template never has to carry a hostname or a hand-written secret.
GENERATE_ME_<n> is replaced by a fresh random secret of <n> characters when
the template is applied. It is expanded by the CLI, so the value that reaches
the API is already the real secret:
$(NAME) references another variable present in the container. These are
expanded at container start, not by the CLI, so hostim env get still shows the
literal $(...) text — that is expected, and the app sees the resolved value:
$(BUILTIN_DOMAIN)— the app's built-in hostname, without a scheme (myapp-abc123.hostim.app).$(GIT_COMMIT)and$(GIT_COMMIT_SHORT)— the full and 7-character SHA of the commit the running image was built from. Git apps only;hostim statusshows the short one.- Managed databases in the same project publish connection variables prefixed
with the database's name, upper-cased and with
-turned into_. A Postgres namedmaingives$(MAIN_POSTGRES_HOST),$(MAIN_POSTGRES_PORT),$(MAIN_POSTGRES_DATABASE),$(MAIN_POSTGRES_USER),$(MAIN_POSTGRES_PASSWORD). MySQL uses_MYSQL_with the same five fields; Redis uses$(<NAME>_REDIS_HOST),$(<NAME>_REDIS_PORT),$(<NAME>_REDIS_DB)and$(<NAME>_REDIS_PASSWORD).
Deploy from CI
GitHub Actions:
The step fails when the build fails, because deploy waits and exits non-zero.
There is also a ready-made GitHub Action at
https://github.com/hostimdev/action.
Any other CI works the same way: export HOSTIM_TOKEN and HOSTIM_PROJECT,
install the binary, run hostim deploy with -o json.
Reporting problems
If a Hostim tool, CLI command or API call returns a wrong or confusing result
that your own input did not cause, tell the user and offer to report it.
Preferred: a GitHub issue at https://github.com/hostimdev/cli/issues. Draft the
title and body, show them to the user, and open the issue with
gh issue create only after the user says yes. Otherwise the user can write to
the support chat in the console (https://console.hostim.dev) or email
[email protected]. Include the tool or command you called, what came back and
what you expected. Leave out secrets and env var values.
Development
The API client (api/client.gen.go) is generated from the live public spec
at https://api.hostim.dev/openapi.public.json — the spec is not vendored:
CI (.github/workflows/generate.yml) re-runs make generate against the live
API and fails if api/client.gen.go has drifted, keeping the committed client
in sync with the deployed API.
This README is the single source for the CLI documentation: it is embedded in
the binary and printed by hostim agent. Edit it here, nowhere else.
License
MIT. See LICENSE.
來源:README.md,提交 1769f38
工具
0版本歷史
16- v0.1.56最新Nov 3, 2026
- v0.1.54Oct 29, 2026
- v0.1.52Oct 22, 2026
- v0.1.51Oct 21, 2026
- v0.1.48Oct 20, 2026
- v0.1.47Oct 19, 2026
- v0.1.46Oct 16, 2026
- v0.1.45Oct 14, 2026
- v0.1.42Oct 12, 2026
- v0.1.41Oct 11, 2026
- v0.1.40Oct 6, 2026
- v0.1.39Oct 2, 2026
- v0.1.38Sep 29, 2026
- v0.1.37Sep 27, 2026
- v0.1.36Sep 24, 2026
- v0.1.33Sep 23, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分