diff --git a/apps/kilocode/7.4.11/.env.sample b/apps/kilocode/7.4.11/.env.sample new file mode 100644 index 000000000..8447d3681 --- /dev/null +++ b/apps/kilocode/7.4.11/.env.sample @@ -0,0 +1,7 @@ +PANEL_APP_PORT_HTTP=4096 +KILO_SERVER_USERNAME=kilo +KILO_SERVER_PASSWORD=replace-with-a-strong-password +APP_DATA_DIR=./data +APP_WORKSPACE_DIR=./workspace +TZ=Asia/Shanghai +CONTAINER_NAME=kilocode-compose-check diff --git a/apps/kilocode/7.4.11/data.yml b/apps/kilocode/7.4.11/data.yml new file mode 100644 index 000000000..4adb86565 --- /dev/null +++ b/apps/kilocode/7.4.11/data.yml @@ -0,0 +1,102 @@ +additionalProperties: + formFields: + - default: 4096 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Server Port + labelZh: 服务端口 + label: + en: Server Port + zh: 服务端口 + zh-Hant: 服務連接埠 + ja: サーバーポート + ko: 서버 포트 + ru: Порт сервера + ms: Port Pelayan + pt-br: Porta do Servidor + required: true + rule: paramPort + type: number + - default: kilo + edit: true + envKey: KILO_SERVER_USERNAME + labelEn: Server Username + labelZh: 服务用户名 + label: + en: Server Username + zh: 服务用户名 + zh-Hant: 服務使用者名稱 + ja: サーバーユーザー名 + ko: 서버 사용자 이름 + ru: Имя пользователя сервера + ms: Nama Pengguna Pelayan + pt-br: Nome de Usuário do Servidor + required: true + rule: paramCommon + type: text + - default: "" + edit: true + envKey: KILO_SERVER_PASSWORD + labelEn: Server Password + labelZh: 服务密码 + label: + en: Server Password + zh: 服务密码 + zh-Hant: 服務密碼 + ja: サーバーパスワード + ko: 서버 비밀번호 + ru: Пароль сервера + ms: Kata Laluan Pelayan + pt-br: Senha do Servidor + random: true + required: true + rule: paramComplexity + type: password + - default: ./data + edit: true + envKey: APP_DATA_DIR + labelEn: Kilo Data Directory + labelZh: Kilo 数据目录 + label: + en: Kilo Data Directory + zh: Kilo 数据目录 + zh-Hant: Kilo 資料目錄 + ja: Kilo データディレクトリ + ko: Kilo 데이터 디렉터리 + ru: Каталог данных Kilo + ms: Direktori Data Kilo + pt-br: Diretório de Dados do Kilo + required: true + type: text + - default: ./workspace + edit: true + envKey: APP_WORKSPACE_DIR + labelEn: Workspace Directory + labelZh: 工作区目录 + label: + en: Workspace Directory + zh: 工作区目录 + zh-Hant: 工作區目錄 + ja: ワークスペースディレクトリ + ko: 작업 공간 디렉터리 + ru: Каталог рабочей области + ms: Direktori Ruang Kerja + pt-br: Diretório do Espaço de Trabalho + required: true + type: text + - default: Asia/Shanghai + edit: true + envKey: TZ + labelEn: Timezone + labelZh: 时区 + label: + en: Timezone + zh: 时区 + zh-Hant: 時區 + ja: タイムゾーン + ko: 시간대 + ru: Часовой пояс + ms: Zon Waktu + pt-br: Fuso Horário + required: true + type: text diff --git a/apps/kilocode/7.4.11/docker-compose.yml b/apps/kilocode/7.4.11/docker-compose.yml new file mode 100644 index 000000000..26b3fef51 --- /dev/null +++ b/apps/kilocode/7.4.11/docker-compose.yml @@ -0,0 +1,40 @@ +services: + kilocode: + image: "ghcr.io/kilo-org/kilocode:7.4.11" + container_name: ${CONTAINER_NAME} + restart: unless-stopped + working_dir: /workspace + command: + - serve + - --hostname + - 0.0.0.0 + - --port + - "4096" + ports: + - "${PANEL_APP_PORT_HTTP}:4096" + environment: + - HOME=/data + - KILO_SERVER_USERNAME=${KILO_SERVER_USERNAME} + - KILO_SERVER_PASSWORD=${KILO_SERVER_PASSWORD} + - TZ=${TZ} + volumes: + - "${APP_DATA_DIR}:/data" + - "${APP_WORKSPACE_DIR}:/workspace" + healthcheck: + test: + - CMD-SHELL + - >- + auth=$$(printf '%s:%s' "$$KILO_SERVER_USERNAME" "$$KILO_SERVER_PASSWORD" | base64 | tr -d '\n'); + wget --header "Authorization: Basic $$auth" -qO- http://127.0.0.1:4096/global/health | grep -q '"healthy":true' + interval: 10s + timeout: 5s + retries: 12 + start_period: 15s + labels: + createdBy: "Apps" + networks: + - 1panel-network + +networks: + 1panel-network: + external: true diff --git a/apps/kilocode/7.4.11/scripts/init.sh b/apps/kilocode/7.4.11/scripts/init.sh new file mode 100755 index 000000000..2005ff9b3 --- /dev/null +++ b/apps/kilocode/7.4.11/scripts/init.sh @@ -0,0 +1,2 @@ +#!/bin/bash +set -e diff --git a/apps/kilocode/7.4.11/scripts/uninstall.sh b/apps/kilocode/7.4.11/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/kilocode/7.4.11/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/kilocode/7.4.11/scripts/upgrade.sh b/apps/kilocode/7.4.11/scripts/upgrade.sh new file mode 100755 index 000000000..2005ff9b3 --- /dev/null +++ b/apps/kilocode/7.4.11/scripts/upgrade.sh @@ -0,0 +1,2 @@ +#!/bin/bash +set -e diff --git a/apps/kilocode/README.md b/apps/kilocode/README.md new file mode 100644 index 000000000..a664778e3 --- /dev/null +++ b/apps/kilocode/README.md @@ -0,0 +1,67 @@ +# Kilo Code + +## 产品介绍 + +Kilo Code 是一个开源 AI 编程代理。本应用部署其官方容器中的无界面服务器模式,供本地 Kilo CLI 通过认证连接,并在指定工作区中管理会话、分析代码和执行开发任务。 + +## 主要功能 + +- 运行 Kilo 官方 headless server,并通过 HTTP Basic Auth 保护远程连接。 +- 持久化 Kilo 配置、认证信息、会话、数据库和用户指定的代码工作区。 +- 支持固定版本与 `latest` 之间的 1Panel 原生升级。 +- 不需要 Docker Socket、特权模式、主机网络或额外设备。 + +## 访问说明 + +当前官方容器未包含 Kilo Console 的静态资源,因此本应用不提供浏览器 Web UI。请在客户端安装 Kilo CLI,并连接已部署的服务器: + +```bash +kilo attach http://<服务器地址>:<服务端口> \ + --username <服务用户名> \ + --password <服务密码> \ + --dir /workspace +``` + +`--dir /workspace` 指向容器内的持久化工作区。模型提供商和 Kilo 账户配置可通过连接后的 CLI 完成,并保存在 Kilo 数据目录中。 + +## 配置项 + +| 变量 | 说明 | 默认值 | +| --- | --- | --- | +| `PANEL_APP_PORT_HTTP` | Kilo 服务端口 | `4096` | +| `KILO_SERVER_USERNAME` | HTTP Basic Auth 用户名 | `kilo` | +| `KILO_SERVER_PASSWORD` | HTTP Basic Auth 密码,安装时随机生成 | 随机值 | +| `APP_DATA_DIR` | 配置、认证信息、会话和数据库目录 | `./data` | +| `APP_WORKSPACE_DIR` | 允许 Kilo 读取和修改的代码工作区 | `./workspace` | +| `TZ` | 容器时区 | `Asia/Shanghai` | + +## 数据与升级 + +- 升级前请备份 `APP_DATA_DIR` 和 `APP_WORKSPACE_DIR`。 +- 固定版本和 `latest` 使用相同的数据布局,可通过 1Panel 原生升级。 +- 默认相对目录 `./data` 和 `./workspace` 位于 1Panel 应用安装目录内,卸载应用时会一并删除;卸载前必须备份。若需独立保留,请在安装时改用应用安装目录之外的专用宿主机绝对路径,并自行管理其权限和备份。 + +## 安全提示 + +- 官方镜像中的 Kilo 进程以 root 身份运行。认证用户可以在挂载的工作区内执行命令并修改文件,因此只应挂载明确交给 Kilo 管理的代码目录。 +- 请保留随机生成的强密码,不要将服务以无认证方式暴露到公网。 +- 远程访问建议通过 1Panel 反向代理启用 HTTPS,并限制可信来源。 + +## Introduction + +Kilo Code is an open-source AI coding agent. This package runs the official image in headless server mode so a local Kilo CLI can connect with authentication and work in the selected persistent workspace. + +## Features + +- Runs the official Kilo headless server behind HTTP Basic Auth. +- Persists Kilo configuration, authentication state, sessions, database files, and the selected code workspace. +- Supports native 1Panel upgrades between the fixed release and `latest`. +- Requires no Docker Socket, privileged mode, host networking, or device access. + +Connect from a local Kilo CLI with `kilo attach`, using `/workspace` as the remote directory. Back up both configured bind directories before upgrades. The default relative `./data` and `./workspace` directories live inside the 1Panel app installation directory and are removed when the app is uninstalled; use dedicated absolute host paths outside that directory if the data must survive uninstall, and manage their permissions and backups yourself. The official image runs as root and authenticated agents can execute commands in the mounted workspace, so mount only intended source code and use TLS plus a strong password for remote access. + +## 参考资料 + +- 项目: +- CLI 文档: +- CLI 命令参考: diff --git a/apps/kilocode/data.yml b/apps/kilocode/data.yml new file mode 100644 index 000000000..3eaa2f9e5 --- /dev/null +++ b/apps/kilocode/data.yml @@ -0,0 +1,31 @@ +name: Kilo Code +tags: + - AI +title: 开源的 AI 编程代理与远程开发服务器 +description: 开源的 AI 编程代理与远程开发服务器 +additionalProperties: + key: kilocode + name: Kilo Code + tags: + - AI + type: tool + website: https://kilo.ai + document: https://kilo.ai/docs/code-with-ai/platforms/cli-reference + github: https://github.com/Kilo-Org/kilocode + shortDescZh: 开源的 AI 编程代理与远程开发服务器 + shortDescEn: An open-source AI coding agent and remote development server + crossVersionUpdate: true + limit: 0 + recommend: 0 + architectures: + - amd64 + - arm64 + description: + en: An open-source AI coding agent and remote development server + zh: 开源的 AI 编程代理与远程开发服务器 + zh-Hant: 開源的 AI 程式設計代理與遠端開發伺服器 + ja: オープンソースの AI コーディングエージェント兼リモート開発サーバー + ko: 오픈 소스 AI 코딩 에이전트 및 원격 개발 서버 + ru: Открытый ИИ-агент для программирования и сервер удалённой разработки + ms: Ejen pengekodan AI sumber terbuka dan pelayan pembangunan jauh + pt-br: Agente de programação com IA de código aberto e servidor de desenvolvimento remoto diff --git a/apps/kilocode/latest/.env.sample b/apps/kilocode/latest/.env.sample new file mode 100644 index 000000000..8447d3681 --- /dev/null +++ b/apps/kilocode/latest/.env.sample @@ -0,0 +1,7 @@ +PANEL_APP_PORT_HTTP=4096 +KILO_SERVER_USERNAME=kilo +KILO_SERVER_PASSWORD=replace-with-a-strong-password +APP_DATA_DIR=./data +APP_WORKSPACE_DIR=./workspace +TZ=Asia/Shanghai +CONTAINER_NAME=kilocode-compose-check diff --git a/apps/kilocode/latest/data.yml b/apps/kilocode/latest/data.yml new file mode 100644 index 000000000..4adb86565 --- /dev/null +++ b/apps/kilocode/latest/data.yml @@ -0,0 +1,102 @@ +additionalProperties: + formFields: + - default: 4096 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Server Port + labelZh: 服务端口 + label: + en: Server Port + zh: 服务端口 + zh-Hant: 服務連接埠 + ja: サーバーポート + ko: 서버 포트 + ru: Порт сервера + ms: Port Pelayan + pt-br: Porta do Servidor + required: true + rule: paramPort + type: number + - default: kilo + edit: true + envKey: KILO_SERVER_USERNAME + labelEn: Server Username + labelZh: 服务用户名 + label: + en: Server Username + zh: 服务用户名 + zh-Hant: 服務使用者名稱 + ja: サーバーユーザー名 + ko: 서버 사용자 이름 + ru: Имя пользователя сервера + ms: Nama Pengguna Pelayan + pt-br: Nome de Usuário do Servidor + required: true + rule: paramCommon + type: text + - default: "" + edit: true + envKey: KILO_SERVER_PASSWORD + labelEn: Server Password + labelZh: 服务密码 + label: + en: Server Password + zh: 服务密码 + zh-Hant: 服務密碼 + ja: サーバーパスワード + ko: 서버 비밀번호 + ru: Пароль сервера + ms: Kata Laluan Pelayan + pt-br: Senha do Servidor + random: true + required: true + rule: paramComplexity + type: password + - default: ./data + edit: true + envKey: APP_DATA_DIR + labelEn: Kilo Data Directory + labelZh: Kilo 数据目录 + label: + en: Kilo Data Directory + zh: Kilo 数据目录 + zh-Hant: Kilo 資料目錄 + ja: Kilo データディレクトリ + ko: Kilo 데이터 디렉터리 + ru: Каталог данных Kilo + ms: Direktori Data Kilo + pt-br: Diretório de Dados do Kilo + required: true + type: text + - default: ./workspace + edit: true + envKey: APP_WORKSPACE_DIR + labelEn: Workspace Directory + labelZh: 工作区目录 + label: + en: Workspace Directory + zh: 工作区目录 + zh-Hant: 工作區目錄 + ja: ワークスペースディレクトリ + ko: 작업 공간 디렉터리 + ru: Каталог рабочей области + ms: Direktori Ruang Kerja + pt-br: Diretório do Espaço de Trabalho + required: true + type: text + - default: Asia/Shanghai + edit: true + envKey: TZ + labelEn: Timezone + labelZh: 时区 + label: + en: Timezone + zh: 时区 + zh-Hant: 時區 + ja: タイムゾーン + ko: 시간대 + ru: Часовой пояс + ms: Zon Waktu + pt-br: Fuso Horário + required: true + type: text diff --git a/apps/kilocode/latest/docker-compose.yml b/apps/kilocode/latest/docker-compose.yml new file mode 100644 index 000000000..52fca761a --- /dev/null +++ b/apps/kilocode/latest/docker-compose.yml @@ -0,0 +1,40 @@ +services: + kilocode: + image: "ghcr.io/kilo-org/kilocode:latest" + container_name: ${CONTAINER_NAME} + restart: unless-stopped + working_dir: /workspace + command: + - serve + - --hostname + - 0.0.0.0 + - --port + - "4096" + ports: + - "${PANEL_APP_PORT_HTTP}:4096" + environment: + - HOME=/data + - KILO_SERVER_USERNAME=${KILO_SERVER_USERNAME} + - KILO_SERVER_PASSWORD=${KILO_SERVER_PASSWORD} + - TZ=${TZ} + volumes: + - "${APP_DATA_DIR}:/data" + - "${APP_WORKSPACE_DIR}:/workspace" + healthcheck: + test: + - CMD-SHELL + - >- + auth=$$(printf '%s:%s' "$$KILO_SERVER_USERNAME" "$$KILO_SERVER_PASSWORD" | base64 | tr -d '\n'); + wget --header "Authorization: Basic $$auth" -qO- http://127.0.0.1:4096/global/health | grep -q '"healthy":true' + interval: 10s + timeout: 5s + retries: 12 + start_period: 15s + labels: + createdBy: "Apps" + networks: + - 1panel-network + +networks: + 1panel-network: + external: true diff --git a/apps/kilocode/latest/scripts/init.sh b/apps/kilocode/latest/scripts/init.sh new file mode 100755 index 000000000..2005ff9b3 --- /dev/null +++ b/apps/kilocode/latest/scripts/init.sh @@ -0,0 +1,2 @@ +#!/bin/bash +set -e diff --git a/apps/kilocode/latest/scripts/uninstall.sh b/apps/kilocode/latest/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/kilocode/latest/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/kilocode/latest/scripts/upgrade.sh b/apps/kilocode/latest/scripts/upgrade.sh new file mode 100755 index 000000000..2005ff9b3 --- /dev/null +++ b/apps/kilocode/latest/scripts/upgrade.sh @@ -0,0 +1,2 @@ +#!/bin/bash +set -e diff --git a/apps/kilocode/logo.png b/apps/kilocode/logo.png new file mode 100644 index 000000000..2ebca8e93 Binary files /dev/null and b/apps/kilocode/logo.png differ