From 04224b0d8e6be03cdb77c5180dae98c49760cffc Mon Sep 17 00:00:00 2001 From: Guohao Li Date: Tue, 13 Jan 2026 06:47:10 +0000 Subject: [PATCH 1/7] I don't care --- LICENSE | 223 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 192 insertions(+), 31 deletions(-) diff --git a/LICENSE b/LICENSE index b2f05efe..7a9e1a9a 100644 --- a/LICENSE +++ b/LICENSE @@ -1,40 +1,201 @@ -Eigent Open Source License -This project employs a User-Segmented Dual Licensing model. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Core principle – user‑segmented dual licensing + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Individuals and teams with 10 or fewer users: You may use the Software under the Apache License 2.0 with the additional Branding and Attribution clause described below. -Teams with more than 10 users: You must obtain a Commercial License from Eigent AI Ltd. before using the Software. + 1. Definitions. -Definitions -User count (≤10 users) – For the purposes of this license, “10 users or fewer” means that no more than ten (10) individuals can access, use, or in any way directly or indirectly benefit from your deployment of the Software. This includes, but is not limited to, developers, testers, operations, end-users, and indirect users via integrated systems. -Branding and Attribution – You must not remove, hide, or alter the Eigent name, logos, or copyright notices displayed in the Eigent user interface (including desktop applications and web consoles).This restriction is inapplicable to uses of Eigent that do not involve its frontend. -Frontend Definition: For the purposes of this license, the "frontend" of Eigent includes all components located in the electron/ directory when running Eigent from the raw source code, or the "electron" image when running Eigent with Docker. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -1. Open Source License – for individuals and teams with 10 or fewer users -Subject to the user‑count and branding requirements above, the Software is licensed to you under the terms of the Apache License 2.0. In short, this grants you the right to use, reproduce, prepare derivative works of, display, perform and distribute the Software. -A Commercial License (see below) is also required if you wish to avoid the obligations of the Apache License 2.0 or if you wish to remove or alter Eigent branding. -Please read and understand the full terms of the Apache License 2.0 carefully before use. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -2. Commercial License – for teams with more than 10 users or branding changes -If your organization has more than ten (10) individuals who will access, use, or benefit from the Software, you must obtain and execute a Commercial License from Eigent AI Ltd. -Even if you qualify under the "10 or fewer users" definition above, if your intended use case cannot comply with the terms of the Apache License 2.0, or if you require specific commercial terms not offered by the Apache License 2.0, or if you wish to remove or modify Eigent’s branding, you also must contact us to obtain and execute a Commercial License. -The Commercial License will grant rights beyond those provided by the Apache License 2.0, including (but not limited to) the ability to rebrand the Software and the possibility of additional warranties, indemnities or support. -To enquire about a Commercial License please email info@eigent.ai. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -3. Contributions -We welcome community contributions to Eigent. -By submitting a contribution to the project (for example, via a pull request), you agree that your contribution is provided under the terms of the Apache License 2.0 and may be incorporated into both open‑source and commercial versions of the Software. -You also agree that Eigent AI Ltd. may adjust this licensing policy in the future to be more restrictive or more permissive as needed. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -4. Other terms -Apart from the specific conditions mentioned above, all other rights and restrictions follow the Apache License 2.0. Detailed information about the Apache License 2.0 can be found at http://www.apache.org/licenses/LICENSE-2.0. -The interactive design of the Software, as well as Eigent’s names and logos, are protected by intellectual property laws. -Eigent AI Ltd. reserves all rights not explicitly granted in this document. We may update this dual‑licensing policy (including the definition and the user‑count threshold) as needed; any changes will be communicated through official project channels such as the code repository or our website. -For any questions about this license or to obtain a Commercial License, please contact info@eigent.ai. -© 2023–2025 Eigent AI Ltd. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -http://www.apache.org/licenses/LICENSE-2.0 -Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. \ No newline at end of file + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2026 @ Eigent.AI + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. From 102a864d434232864512d1532e2d3130b540798e Mon Sep 17 00:00:00 2001 From: Cole Murray Date: Mon, 12 Jan 2026 23:10:48 -0800 Subject: [PATCH 2/7] fix(security): prevent arbitrary code execution in CI workflow SECURITY FIX: The previous CI workflow was vulnerable to arbitrary code execution from fork PRs due to using `pull_request_target` with checkout of untrusted PR code. Attack vector: - Attacker forks repo and adds malicious node_modules/.bin/markdownlint-cli - Opens PR to trigger CI workflow - npx executes attacker's script with repository write permissions - Attacker can exfiltrate credentials, comment on PRs, or push code Fix: - Split workflow into two separate files - ci.yml: Uses pull_request_target for commenting (no code checkout) - lint-markdown.yml: Uses pull_request for linting (safe to checkout) The pull_request trigger runs fork PRs with read-only permissions and no access to repository secrets, making it safe to checkout and execute PR code. Additional improvements: - Updated actions to latest versions (checkout@v4, github-script@v7, paths-filter@v3) - Pin markdownlint-cli version to prevent supply chain attacks - Added security comments explaining the rationale Reference: https://securitylab.github.com/research/github-actions-preventing-pwn-requests/ --- .github/workflows/ci.yml | 36 ++++------------------------- .github/workflows/lint-markdown.yml | 36 +++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 32 deletions(-) create mode 100644 .github/workflows/lint-markdown.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3d3b53e1..45e5a11e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,16 +9,13 @@ permissions: pull-requests: write jobs: - job1: + check-files: name: Check Not Allowed File Changes runs-on: ubuntu-latest - outputs: - markdown_change: ${{ steps.filter_markdown.outputs.change }} - markdown_files: ${{ steps.filter_markdown.outputs.change_files }} steps: - + # Note: dorny/paths-filter fetches file info via GitHub API, no checkout needed - name: Check Not Allowed File Changes - uses: dorny/paths-filter@v2 + uses: dorny/paths-filter@v3 id: filter_not_allowed with: list-files: json @@ -31,7 +28,7 @@ jobs: # ref: https://github.com/github/docs/blob/main/.github/workflows/triage-unallowed-contributions.yml - name: Comment About Changes We Can't Accept if: ${{ steps.filter_not_allowed.outputs.change == 'true' }} - uses: actions/github-script@v6 + uses: actions/github-script@v7 with: script: | let workflowFailMessage = "It looks like you've modified some files that we can't accept as contributions." @@ -54,28 +51,3 @@ jobs: console.log("Error creating comment.", err) } core.setFailed(workflowFailMessage) - - - name: Check Not Linted Markdown - if: ${{ always() }} - uses: dorny/paths-filter@v2 - id: filter_markdown - with: - list-files: shell - filters: | - change: - - added|modified: '*.md' - - - job2: - name: Lint Markdown - runs-on: ubuntu-latest - needs: job1 - if: ${{ always() && needs.job1.outputs.markdown_change == 'true' }} - steps: - - name: Checkout Code - uses: actions/checkout@v3 - with: - ref: ${{ github.event.pull_request.head.sha }} - - - name: Lint markdown - run: npx markdownlint-cli ${{ needs.job1.outputs.markdown_files }} --ignore node_modules \ No newline at end of file diff --git a/.github/workflows/lint-markdown.yml b/.github/workflows/lint-markdown.yml new file mode 100644 index 00000000..d4997b3d --- /dev/null +++ b/.github/workflows/lint-markdown.yml @@ -0,0 +1,36 @@ +name: Lint Markdown + +# SECURITY: Use pull_request (not pull_request_target) for workflows that +# checkout and execute code from PRs. This ensures fork PRs run with +# read-only permissions and no access to repository secrets. +# +# See: https://securitylab.github.com/research/github-actions-preventing-pwn-requests/ + +on: + pull_request: + branches: + - main + paths: + - '**.md' + +permissions: + contents: read + +jobs: + lint: + name: Lint Markdown + runs-on: ubuntu-latest + steps: + - name: Checkout Code + uses: actions/checkout@v4 + + - name: Get changed markdown files + id: changed-files + uses: tj-actions/changed-files@v45 + with: + files: | + **.md + + - name: Lint markdown + if: steps.changed-files.outputs.any_changed == 'true' + run: npx markdownlint-cli@0.43.0 ${{ steps.changed-files.outputs.all_changed_files }} --ignore node_modules From 3f13d49c7a0475de6e261d27d23f3807a06e6b12 Mon Sep 17 00:00:00 2001 From: Sun Tao <2605127667@qq.com> Date: Tue, 13 Jan 2026 19:22:57 +0800 Subject: [PATCH 3/7] update --- server/app/type/model_providers.py | 1 + src/lib/llm.ts | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/server/app/type/model_providers.py b/server/app/type/model_providers.py index 2dbd424b..c9fab31f 100644 --- a/server/app/type/model_providers.py +++ b/server/app/type/model_providers.py @@ -37,6 +37,7 @@ class ModelProviders(Enum): NETMIND = "netmind" NOVITA = "novita" WATSONX = "watsonx" + MINIMAX = "minimax" @classmethod def get_all_values(cls) -> List[str]: diff --git a/src/lib/llm.ts b/src/lib/llm.ts index acc14c3e..9f6d3d0b 100644 --- a/src/lib/llm.ts +++ b/src/lib/llm.ts @@ -46,6 +46,15 @@ export const INIT_PROVODERS: Provider[] = [ is_valid: false, model_type: "" }, + { + id: 'minimax', + name: 'Minimax', + apiKey: '', + apiHost: 'https://api.minimax.io/v1', + description: "Minimax model configuration.", + is_valid: false, + model_type: "" + }, { id: 'bedrock', name: 'AWS Bedrock', @@ -88,4 +97,4 @@ export const INIT_PROVODERS: Provider[] = [ is_valid: false, model_type: "" } -] \ No newline at end of file +] From b949bc13b97ea1542ca6cbf9cf4899ed649881ae Mon Sep 17 00:00:00 2001 From: Wendong-Fan Date: Tue, 13 Jan 2026 21:32:29 +0800 Subject: [PATCH 4/7] remove unused model type file --- server/app/type/model_providers.py | 64 ------ server/app/type/model_type.py | 344 ----------------------------- 2 files changed, 408 deletions(-) delete mode 100644 server/app/type/model_providers.py delete mode 100644 server/app/type/model_type.py diff --git a/server/app/type/model_providers.py b/server/app/type/model_providers.py deleted file mode 100644 index c9fab31f..00000000 --- a/server/app/type/model_providers.py +++ /dev/null @@ -1,64 +0,0 @@ -from enum import Enum -from typing import List - - -class ModelProviders(Enum): - OPENAI = "openai" - AWS_BEDROCK = "aws-bedrock" - AZURE = "azure" - ANTHROPIC = "anthropic" - GROQ = "groq" - OPENROUTER = "openrouter" - OLLAMA = "ollama" - LITELLM = "litellm" - LMSTUDIO = "lmstudio" - ZHIPU = "zhipuai" - GEMINI = "gemini" - VLLM = "vllm" - MISTRAL = "mistral" - REKA = "reka" - TOGETHER = "together" - STUB = "stub" - OPENAI_COMPATIBLE_MODEL = "openai-compatible-model" - SAMBA = "samba-nova" - COHERE = "cohere" - YI = "lingyiwanwu" - QWEN = "tongyi-qianwen" - NVIDIA = "nvidia" - DEEPSEEK = "deepseek" - PPIO = "ppio" - SGLANG = "sglang" - INTERNLM = "internlm" - MOONSHOT = "moonshot" - MODELSCOPE = "modelscope" - SILICONFLOW = "siliconflow" - AIML = "aiml" - VOLCANO = "volcano" - NETMIND = "netmind" - NOVITA = "novita" - WATSONX = "watsonx" - MINIMAX = "minimax" - - @classmethod - def get_all_values(cls) -> List[str]: - return [platform.value for platform in cls] - - @classmethod - def get_all_names(cls) -> List[str]: - return [platform.name for platform in cls] - - @classmethod - def get_all_items(cls) -> List[dict]: - return [{"name": platform.name, "value": platform.value} for platform in cls] - - @classmethod - def is_valid_platform(cls, platform_name: str) -> bool: - try: - cls(platform_name) - return True - except ValueError: - return False - - @classmethod - def get_platform_by_name(cls, platform_name: str) -> "ModelPlatformType": - return cls(platform_name) diff --git a/server/app/type/model_type.py b/server/app/type/model_type.py deleted file mode 100644 index 8fc1abd7..00000000 --- a/server/app/type/model_type.py +++ /dev/null @@ -1,344 +0,0 @@ -from enum import Enum - - -class ModelType(Enum): - GPT_3_5_TURBO = "gpt-3.5-turbo" - GPT_4 = "gpt-4" - GPT_4_TURBO = "gpt-4-turbo" - GPT_4O = "gpt-4o" - GPT_4O_MINI = "gpt-4o-mini" - GPT_4_5_PREVIEW = "gpt-4.5-preview" - O1 = "o1" - O1_PREVIEW = "o1-preview" - O1_MINI = "o1-mini" - O3_MINI = "o3-mini" - GPT_4_1 = "gpt-4.1-2025-04-14" - GPT_4_1_MINI = "gpt-4.1-mini-2025-04-14" - GPT_4_1_NANO = "gpt-4.1-nano-2025-04-14" - O4_MINI = "o4-mini" - O3 = "o3" - O3_PRO = "o3-pro" - - AWS_CLAUDE_3_7_SONNET = "anthropic.claude-3-7-sonnet-20250219-v1:0" - AWS_CLAUDE_3_5_SONNET = "anthropic.claude-3-5-sonnet-20241022-v2:0" - AWS_CLAUDE_3_HAIKU = "anthropic.claude-3-haiku-20240307-v1:0" - AWS_CLAUDE_3_SONNET = "anthropic.claude-3-sonnet-20240229-v1:0" - AWS_DEEPSEEK_R1 = "us.deepseek.r1-v1:0" - AWS_LLAMA_3_3_70B_INSTRUCT = "us.meta.llama3-3-70b-instruct-v1:0" - AWS_LLAMA_3_2_90B_INSTRUCT = "us.meta.llama3-2-90b-instruct-v1:0" - AWS_LLAMA_3_2_11B_INSTRUCT = "us.meta.llama3-2-11b-instruct-v1:0" - AWS_CLAUDE_SONNET_4 = "anthropic.claude-sonnet-4-20250514-v1:0" - AWS_CLAUDE_OPUS_4 = "anthropic.claude-opus-4-20250514-v1:0" - - GLM_4 = "glm-4" - GLM_4V = "glm-4v" - GLM_4V_FLASH = "glm-4v-flash" - GLM_4V_PLUS_0111 = "glm-4v-plus-0111" - GLM_4_PLUS = "glm-4-plus" - GLM_4_AIR = "glm-4-air" - GLM_4_AIR_0111 = "glm-4-air-0111" - GLM_4_AIRX = "glm-4-airx" - GLM_4_LONG = "glm-4-long" - GLM_4_FLASHX = "glm-4-flashx" - GLM_4_FLASH = "glm-4-flash" - GLM_ZERO_PREVIEW = "glm-zero-preview" - GLM_3_TURBO = "glm-3-turbo" - - # Groq platform models - GROQ_LLAMA_3_1_8B = "llama-3.1-8b-instant" - GROQ_LLAMA_3_3_70B = "llama-3.3-70b-versatile" - GROQ_LLAMA_3_3_70B_PREVIEW = "llama-3.3-70b-specdec" - GROQ_LLAMA_3_8B = "llama3-8b-8192" - GROQ_LLAMA_3_70B = "llama3-70b-8192" - GROQ_MIXTRAL_8_7B = "mixtral-8x7b-32768" - GROQ_GEMMA_2_9B_IT = "gemma2-9b-it" - - # OpenRouter models - OPENROUTER_LLAMA_3_1_405B = "meta-llama/llama-3.1-405b-instruct" - OPENROUTER_LLAMA_3_1_70B = "meta-llama/llama-3.1-70b-instruct" - OPENROUTER_LLAMA_4_MAVERICK = "meta-llama/llama-4-maverick" - OPENROUTER_LLAMA_4_MAVERICK_FREE = "meta-llama/llama-4-maverick:free" - OPENROUTER_LLAMA_4_SCOUT = "meta-llama/llama-4-scout" - OPENROUTER_LLAMA_4_SCOUT_FREE = "meta-llama/llama-4-scout:free" - OPENROUTER_OLYMPICODER_7B = "open-r1/olympiccoder-7b:free" - - # LMStudio models - LMSTUDIO_GEMMA_3_1B = "gemma-3-1b" - LMSTUDIO_GEMMA_3_4B = "gemma-3-4b" - LMSTUDIO_GEMMA_3_12B = "gemma-3-12b" - LMSTUDIO_GEMMA_3_27B = "gemma-3-27b" - - # TogetherAI platform models support tool calling - TOGETHER_LLAMA_3_1_8B = "meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo" - TOGETHER_LLAMA_3_1_70B = "meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo" - TOGETHER_LLAMA_3_1_405B = "meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo" - TOGETHER_LLAMA_3_3_70B = "meta-llama/Llama-3.3-70B-Instruct-Turbo" - TOGETHER_MIXTRAL_8_7B = "mistralai/Mixtral-8x7B-Instruct-v0.1" - TOGETHER_MISTRAL_7B = "mistralai/Mistral-7B-Instruct-v0.1" - TOGETHER_LLAMA_4_MAVERICK = "meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8" - TOGETHER_LLAMA_4_SCOUT = "meta-llama/Llama-4-Scout-17B-16E-Instruct" - - # PPIO platform models support tool calling - PPIO_DEEPSEEK_PROVER_V2_671B = "deepseek/deepseek-prover-v2-671b" - PPIO_DEEPSEEK_R1_TURBO = "deepseek/deepseek-r1-turbo" - PPIO_DEEPSEEK_V3_TURBO = "deepseek/deepseek-v3-turbo" - PPIO_DEEPSEEK_R1_COMMUNITY = "deepseek/deepseek-r1/community" - PPIO_DEEPSEEK_V3_COMMUNITY = "deepseek/deepseek-v3/community" - PPIO_DEEPSEEK_R1 = "deepseek/deepseek-r1" - PPIO_DEEPSEEK_V3 = "deepseek/deepseek-v3" - PPIO_QWEN_2_5_72B = "qwen/qwen-2.5-72b-instruct" - PPIO_BAICHUAN_2_13B_CHAT = "baichuan/baichuan2-13b-chat" - PPIO_LLAMA_3_3_70B = "meta-llama/llama-3.3-70b-instruct" - PPIO_LLAMA_3_1_70B = "meta-llama/llama-3.1-70b-instruct" - PPIO_YI_1_5_34B_CHAT = "01-ai/yi-1.5-34b-chat" - - # SambaNova Cloud platform models support tool calling - SAMBA_LLAMA_3_1_8B = "Meta-Llama-3.1-8B-Instruct" - SAMBA_LLAMA_3_1_70B = "Meta-Llama-3.1-70B-Instruct" - SAMBA_LLAMA_3_1_405B = "Meta-Llama-3.1-405B-Instruct" - - # SGLang models support tool calling - SGLANG_LLAMA_3_1_8B = "meta-llama/Meta-Llama-3.1-8B-Instruct" - SGLANG_LLAMA_3_1_70B = "meta-llama/Meta-Llama-3.1-70B-Instruct" - SGLANG_LLAMA_3_1_405B = "meta-llama/Meta-Llama-3.1-405B-Instruct" - SGLANG_LLAMA_3_2_1B = "meta-llama/Llama-3.2-1B-Instruct" - SGLANG_MIXTRAL_NEMO = "mistralai/Mistral-Nemo-Instruct-2407" - SGLANG_MISTRAL_7B = "mistralai/Mistral-7B-Instruct-v0.3" - SGLANG_QWEN_2_5_7B = "Qwen/Qwen2.5-7B-Instruct" - SGLANG_QWEN_2_5_32B = "Qwen/Qwen2.5-32B-Instruct" - SGLANG_QWEN_2_5_72B = "Qwen/Qwen2.5-72B-Instruct" - - STUB = "stub" - - # Legacy anthropic models - # NOTE: anthropic legacy models only Claude 2.1 has system prompt support - CLAUDE_2_1 = "claude-2.1" - CLAUDE_2_0 = "claude-2.0" - CLAUDE_INSTANT_1_2 = "claude-instant-1.2" - - # Claude models - CLAUDE_3_OPUS = "claude-3-opus-latest" - CLAUDE_3_SONNET = "claude-3-sonnet-20240229" - CLAUDE_3_HAIKU = "claude-3-haiku-20240307" - CLAUDE_3_5_SONNET = "claude-3-5-sonnet-latest" - CLAUDE_3_5_HAIKU = "claude-3-5-haiku-latest" - CLAUDE_3_7_SONNET = "claude-3-7-sonnet-latest" - CLAUDE_SONNET_4 = "claude-sonnet-4-20250514" - CLAUDE_OPUS_4 = "claude-opus-4-20250514" - - # Netmind models - NETMIND_LLAMA_4_MAVERICK_17B_128E_INSTRUCT = "meta-llama/Llama-4-Maverick-17B-128E-Instruct" - NETMIND_LLAMA_4_SCOUT_17B_16E_INSTRUCT = "meta-llama/Llama-4-Scout-17B-16E-Instruct" - NETMIND_DEEPSEEK_R1 = "deepseek-ai/DeepSeek-R1" - NETMIND_DEEPSEEK_V3 = "deepseek-ai/DeepSeek-V3-0324" - NETMIND_DOUBAO_1_5_PRO = "doubao/Doubao-1.5-pro" - NETMIND_QWQ_32B = "Qwen/QwQ-32B" - - # Nvidia models - NVIDIA_NEMOTRON_340B_INSTRUCT = "nvidia/nemotron-4-340b-instruct" - NVIDIA_NEMOTRON_340B_REWARD = "nvidia/nemotron-4-340b-reward" - NVIDIA_YI_LARGE = "01-ai/yi-large" - NVIDIA_MISTRAL_LARGE = "mistralai/mistral-large" - NVIDIA_MIXTRAL_8X7B = "mistralai/mixtral-8x7b-instruct" - NVIDIA_LLAMA3_70B = "meta/llama3-70b" - NVIDIA_LLAMA3_1_8B_INSTRUCT = "meta/llama-3.1-8b-instruct" - NVIDIA_LLAMA3_1_70B_INSTRUCT = "meta/llama-3.1-70b-instruct" - NVIDIA_LLAMA3_1_405B_INSTRUCT = "meta/llama-3.1-405b-instruct" - NVIDIA_LLAMA3_2_1B_INSTRUCT = "meta/llama-3.2-1b-instruct" - NVIDIA_LLAMA3_2_3B_INSTRUCT = "meta/llama-3.2-3b-instruct" - NVIDIA_LLAMA3_3_70B_INSTRUCT = "meta/llama-3.3-70b-instruct" - - # Gemini models - GEMINI_3_PRO ="gemini-3-pro-preview" - GEMINI_2_5_FLASH_PREVIEW = "gemini-2.5-flash-preview-04-17" - GEMINI_2_5_PRO_PREVIEW = "gemini-2.5-pro-preview-06-05" - GEMINI_2_0_FLASH = "gemini-2.0-flash" - GEMINI_2_0_FLASH_EXP = "gemini-2.0-flash-exp" - GEMINI_2_0_FLASH_THINKING = "gemini-2.0-flash-thinking-exp" - GEMINI_2_0_PRO_EXP = "gemini-2.0-pro-exp-02-05" - GEMINI_2_0_FLASH_LITE = "gemini-2.0-flash-lite" - GEMINI_2_0_FLASH_LITE_PREVIEW = "gemini-2.0-flash-lite-preview-02-05" - GEMINI_1_5_FLASH = "gemini-1.5-flash" - GEMINI_1_5_PRO = "gemini-1.5-pro" - - # Mistral AI models - MISTRAL_3B = "ministral-3b-latest" - MISTRAL_7B = "open-mistral-7b" - MISTRAL_8B = "ministral-8b-latest" - MISTRAL_CODESTRAL = "codestral-latest" - MISTRAL_CODESTRAL_MAMBA = "open-codestral-mamba" - MISTRAL_LARGE = "mistral-large-latest" - MISTRAL_MIXTRAL_8x7B = "open-mixtral-8x7b" - MISTRAL_MIXTRAL_8x22B = "open-mixtral-8x22b" - MISTRAL_NEMO = "open-mistral-nemo" - MISTRAL_PIXTRAL_12B = "pixtral-12b-2409" - MISTRAL_MEDIUM_3 = "mistral-medium-latest" - MAGISTRAL_MEDIUM = "magistral-medium-2506" - - # Reka models - REKA_CORE = "reka-core" - REKA_FLASH = "reka-flash" - REKA_EDGE = "reka-edge" - - # Cohere models - COHERE_COMMAND_R_PLUS = "command-r-plus" - COHERE_COMMAND_R = "command-r" - COHERE_COMMAND_LIGHT = "command-light" - COHERE_COMMAND = "command" - COHERE_COMMAND_NIGHTLY = "command-nightly" - - # Qwen models (Aliyun) - QWEN_MAX = "qwen-max" - QWEN_PLUS = "qwen-plus" - QWEN_TURBO = "qwen-turbo" - QWEN_PLUS_LATEST = "qwen-plus-latest" - QWEN_PLUS_2025_04_28 = "qwen-plus-2025-04-28" - QWEN_TURBO_LATEST = "qwen-turbo-latest" - QWEN_TURBO_2025_04_28 = "qwen-turbo-2025-04-28" - QWEN_LONG = "qwen-long" - QWEN_VL_MAX = "qwen-vl-max" - QWEN_VL_PLUS = "qwen-vl-plus" - QWEN_MATH_PLUS = "qwen-math-plus" - QWEN_MATH_TURBO = "qwen-math-turbo" - QWEN_CODER_TURBO = "qwen-coder-turbo" - QWEN_2_5_CODER_32B = "qwen2.5-coder-32b-instruct" - QWEN_2_5_VL_72B = "qwen2.5-vl-72b-instruct" - QWEN_2_5_72B = "qwen2.5-72b-instruct" - QWEN_2_5_32B = "qwen2.5-32b-instruct" - QWEN_2_5_14B = "qwen2.5-14b-instruct" - QWEN_QWQ_32B = "qwq-32b-preview" - QWEN_QVQ_72B = "qvq-72b-preview" - QWEN_QWQ_PLUS = "qwq-plus" - - # Yi models (01-ai) - YI_LIGHTNING = "yi-lightning" - YI_LARGE = "yi-large" - YI_MEDIUM = "yi-medium" - YI_LARGE_TURBO = "yi-large-turbo" - YI_VISION = "yi-vision" - YI_MEDIUM_200K = "yi-medium-200k" - YI_SPARK = "yi-spark" - YI_LARGE_RAG = "yi-large-rag" - YI_LARGE_FC = "yi-large-fc" - - # DeepSeek models - DEEPSEEK_CHAT = "deepseek-chat" - DEEPSEEK_REASONER = "deepseek-reasoner" - # InternLM models - INTERNLM3_LATEST = "internlm3-latest" - INTERNLM3_8B_INSTRUCT = "internlm3-8b-instruct" - INTERNLM2_5_LATEST = "internlm2.5-latest" - INTERNLM2_PRO_CHAT = "internlm2-pro-chat" - - # Moonshot models - MOONSHOT_V1_8K = "moonshot-v1-8k" - MOONSHOT_V1_32K = "moonshot-v1-32k" - MOONSHOT_V1_128K = "moonshot-v1-128k" - - # SiliconFlow models support tool calling - SILICONFLOW_DEEPSEEK_V2_5 = "deepseek-ai/DeepSeek-V2.5" - SILICONFLOW_DEEPSEEK_V3 = "deepseek-ai/DeepSeek-V3" - SILICONFLOW_INTERN_LM2_5_20B_CHAT = "internlm/internlm2_5-20b-chat" - SILICONFLOW_INTERN_LM2_5_7B_CHAT = "internlm/internlm2_5-7b-chat" - SILICONFLOW_PRO_INTERN_LM2_5_7B_CHAT = "Pro/internlm/internlm2_5-7b-chat" - SILICONFLOW_QWEN2_5_72B_INSTRUCT = "Qwen/Qwen2.5-72B-Instruct" - SILICONFLOW_QWEN2_5_32B_INSTRUCT = "Qwen/Qwen2.5-32B-Instruct" - SILICONFLOW_QWEN2_5_14B_INSTRUCT = "Qwen/Qwen2.5-14B-Instruct" - SILICONFLOW_QWEN2_5_7B_INSTRUCT = "Qwen/Qwen2.5-7B-Instruct" - SILICONFLOW_PRO_QWEN2_5_7B_INSTRUCT = "Pro/Qwen/Qwen2.5-7B-Instruct" - SILICONFLOW_THUDM_GLM_4_9B_CHAT = "THUDM/glm-4-9b-chat" - SILICONFLOW_PRO_THUDM_GLM_4_9B_CHAT = "Pro/THUDM/glm-4-9b-chat" - - # AIML models support tool calling - AIML_MIXTRAL_8X7B = "mistralai/Mixtral-8x7B-Instruct-v0.1" - AIML_MISTRAL_7B_INSTRUCT = "mistralai/Mistral-7B-Instruct-v0.1" - - # Novita platform models support tool calling - NOVITA_LLAMA_4_MAVERICK_17B = "meta-llama/llama-4-maverick-17b-128e-instruct-fp8" - NOVITA_LLAMA_4_SCOUT_17B = "meta-llama/llama-4-scout-17b-16e-instruct" - NOVITA_DEEPSEEK_V3_0324 = "deepseek/deepseek-v3-0324" - NOVITA_QWEN_2_5_V1_72B = "qwen/qwen2.5-vl-72b-instruct" - NOVITA_DEEPSEEK_V3_TURBO = "deepseek/deepseek-v3-turbo" - NOVITA_DEEPSEEK_R1_TURBO = "deepseek/deepseek-r1-turbo" - NOVITA_GEMMA_3_27B_IT = "google/gemma-3-27b-it" - NOVITA_QWEN_32B = "qwen/qwq-32b" - NOVITA_L3_8B_STHENO_V3_2 = "Sao10K/L3-8B-Stheno-v3.2" - NOVITA_MYTHOMAX_L2_13B = "gryphe/mythomax-l2-13b" - NOVITA_DEEPSEEK_R1_DISTILL_LLAMA_8B = "deepseek/deepseek-r1-distill-llama-8b" - NOVITA_DEEPSEEK_V3 = "deepseek/deepseek_v3" - NOVITA_LLAMA_3_1_8B = "meta-llama/llama-3.1-8b-instruct" - NOVITA_DEEPSEEK_R1_DISTILL_QWEN_14B = "deepseek/deepseek-r1-distill-qwen-14b" - NOVITA_LLAMA_3_3_70B = "meta-llama/llama-3.3-70b-instruct" - NOVITA_QWEN_2_5_72B = "qwen/qwen-2.5-72b-instruct" - NOVITA_MISTRAL_NEMO = "mistralai/mistral-nemo" - NOVITA_DEEPSEEK_R1_DISTILL_QWEN_32B = "deepseek/deepseek-r1-distill-qwen-32b" - NOVITA_LLAMA_3_8B = "meta-llama/llama-3-8b-instruct" - NOVITA_WIZARDLM_2_8X22B = "microsoft/wizardlm-2-8x22b" - NOVITA_DEEPSEEK_R1_DISTILL_LLAMA_70B = "deepseek/deepseek-r1-distill-llama-70b" - NOVITA_LLAMA_3_1_70B = "meta-llama/llama-3.1-70b-instruct" - NOVITA_GEMMA_2_9B_IT = "google/gemma-2-9b-it" - NOVITA_MISTRAL_7B = "mistralai/mistral-7b-instruct" - NOVITA_LLAMA_3_70B = "meta-llama/llama-3-70b-instruct" - NOVITA_DEEPSEEK_R1 = "deepseek/deepseek-r1" - NOVITA_HERMES_2_PRO_LLAMA_3_8B = "nousresearch/hermes-2-pro-llama-3-8b" - NOVITA_L3_70B_EURYALE_V2_1 = "sao10k/l3-70b-euryale-v2.1" - NOVITA_DOLPHIN_MIXTRAL_8X22B = "cognitivecomputations/dolphin-mixtral-8x22b" - NOVITA_AIROBOROS_L2_70B = "jondurbin/airoboros-l2-70b" - NOVITA_MIDNIGHT_ROSE_70B = "sophosympatheia/midnight-rose-70b" - NOVITA_L3_8B_LUNARIS = "sao10k/l3-8b-lunaris" - NOVITA_GLM_4_9B_0414 = "thudm/glm-4-9b-0414" - NOVITA_GLM_Z1_9B_0414 = "thudm/glm-z1-9b-0414" - NOVITA_GLM_Z1_32B_0414 = "thudm/glm-z1-32b-0414" - NOVITA_GLM_4_32B_0414 = "thudm/glm-4-32b-0414" - NOVITA_GLM_Z1_RUMINATION_32B_0414 = "thudm/glm-z1-rumination-32b-0414" - NOVITA_QWEN_2_5_7B = "qwen/qwen2.5-7b-instruct" - NOVITA_LLAMA_3_2_1B = "meta-llama/llama-3.2-1b-instruct" - NOVITA_LLAMA_3_2_11B_VISION = "meta-llama/llama-3.2-11b-vision-instruct" - NOVITA_LLAMA_3_2_3B = "meta-llama/llama-3.2-3b-instruct" - NOVITA_LLAMA_3_1_8B_BF16 = "meta-llama/llama-3.1-8b-instruct-bf16" - NOVITA_L31_70B_EURYALE_V2_2 = "sao10k/l31-70b-euryale-v2.2" - - # ModelScope models support tool calling - MODELSCOPE_QWEN_2_5_7B_INSTRUCT = "Qwen/Qwen2.5-7B-Instruct" - MODELSCOPE_QWEN_2_5_14B_INSTRUCT = "Qwen/Qwen2.5-14B-Instruct" - MODELSCOPE_QWEN_2_5_32B_INSTRUCT = "Qwen/Qwen2.5-32B-Instruct" - MODELSCOPE_QWEN_2_5_72B_INSTRUCT = "Qwen/Qwen2.5-72B-Instruct" - MODELSCOPE_QWEN_2_5_CODER_7B_INSTRUCT = "Qwen/Qwen2.5-Coder-7B-Instruct" - MODELSCOPE_QWEN_2_5_CODER_14B_INSTRUCT = "Qwen/Qwen2.5-Coder-14B-Instruct" - MODELSCOPE_QWEN_2_5_CODER_32B_INSTRUCT = "Qwen/Qwen2.5-Coder-32B-Instruct" - MODELSCOPE_QWEN_3_235B_A22B = "Qwen/Qwen3-235B-A22B" - MODELSCOPE_QWEN_3_32B = "Qwen/Qwen3-32B" - MODELSCOPE_QWQ_32B = "Qwen/QwQ-32B" - MODELSCOPE_QWQ_32B_PREVIEW = "Qwen/QwQ-32B-Preview" - MODELSCOPE_LLAMA_3_1_8B_INSTRUCT = "LLM-Research/Meta-Llama-3.1-8B-Instruct" - MODELSCOPE_LLAMA_3_1_70B_INSTRUCT = "LLM-Research/Meta-Llama-3.1-70B-Instruct" - MODELSCOPE_LLAMA_3_1_405B_INSTRUCT = "LLM-Research/Meta-Llama-3.1-405B-Instruct" - MODELSCOPE_LLAMA_3_3_70B_INSTRUCT = "LLM-Research/Llama-3.3-70B-Instruct" - MODELSCOPE_MINISTRAL_8B_INSTRUCT = "mistralai/Ministral-8B-Instruct-2410" - MODELSCOPE_DEEPSEEK_V3_0324 = "deepseek-ai/DeepSeek-V3-0324" - - # WatsonX models - WATSONX_GRANITE_3_8B_INSTRUCT = "ibm/granite-3-8b-instruct" - WATSONX_LLAMA_3_3_70B_INSTRUCT = "meta-llama/llama-3-3-70b-instruct" - WATSONX_LLAMA_3_2_1B_INSTRUCT = "meta-llama/llama-3-2-1b-instruct" - WATSONX_LLAMA_3_2_3B_INSTRUCT = "meta-llama/llama-3-2-3b-instruct" - WATSONX_LLAMA_3_2_11B_VISION_INSTRUCT = "meta-llama/llama-3-2-11b-vision-instruct" - WATSONX_LLAMA_3_2_90B_VISION_INSTRUCT = "meta-llama/llama-3-2-90b-vision-instruct" - WATSONX_LLAMA_GUARD_3_11B_VISION_INSTRUCT = "meta-llama/llama-guard-3-11b-vision-instruct" - WATSONX_MISTRAL_LARGE = "mistralai/mistral-large" - - # Crynux models - CRYNUX_DEEPSEEK_R1_DISTILL_QWEN_1_5B = "deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B" - CRYNUX_DEEPSEEK_R1_DISTILL_QWEN_7B = "deepseek-ai/DeepSeek-R1-Distill-Qwen-7B" - CRYNUX_DEEPSEEK_R1_DISTILL_LLAMA_8B = "deepseek-ai/DeepSeek-R1-Distill-Llama-8B" - - CRYNUX_QWEN_3_4_B = "Qwen/Qwen3-4B" - CRYNUX_QWEN_3_8_B = "Qwen/Qwen3-8B" - CRYNUX_QWEN_2_5_7B = "Qwen/Qwen2.5-7B" - CRYNUX_QWEN_2_5_7B_INSTRUCT = "Qwen/Qwen2.5-7B-Instruct" - - CRYNUX_NOUS_HERMES_3_LLAMA_3_1_8B = "NousResearch/Hermes-3-Llama-3.1-8B" - CRYNUX_NOUS_HERMES_3_LLAMA_3_2_3B = "NousResearch/Hermes-3-Llama-3.2-3B" - - def __str__(self): - return self.value From 9446f8aa89739908ea1bcba944691ba7ebc06af0 Mon Sep 17 00:00:00 2001 From: Wendong-Fan Date: Tue, 13 Jan 2026 21:55:29 +0800 Subject: [PATCH 5/7] cicd security --- .github/workflows/ci.yml | 1 + .github/workflows/lint-markdown.yml | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 45e5a11e..1480ac5d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,6 +6,7 @@ on: - main permissions: + contents: read pull-requests: write jobs: diff --git a/.github/workflows/lint-markdown.yml b/.github/workflows/lint-markdown.yml index d4997b3d..8bac4240 100644 --- a/.github/workflows/lint-markdown.yml +++ b/.github/workflows/lint-markdown.yml @@ -33,4 +33,6 @@ jobs: - name: Lint markdown if: steps.changed-files.outputs.any_changed == 'true' - run: npx markdownlint-cli@0.43.0 ${{ steps.changed-files.outputs.all_changed_files }} --ignore node_modules + run: npx markdownlint-cli@0.43.0 $CHANGED_FILES --ignore node_modules + env: + CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} From 59c58a854fe3794ea500bfd187a8dcb156e192d4 Mon Sep 17 00:00:00 2001 From: Wendong-Fan Date: Tue, 13 Jan 2026 22:09:49 +0800 Subject: [PATCH 6/7] docs: highlight Local Deployment mode --- README.md | 87 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 46 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index f117fb22..c96b9742 100644 --- a/README.md +++ b/README.md @@ -44,17 +44,16 @@ Built on [CAMEL-AI][camel-site]'s acclaimed open-source project, our system intr
-[![][image-join-us]][join-us] -
Table of contents #### TOC - [🚀 Getting Started](#-getting-started) - - [☁️ Cloud Version](#️-cloud-version) - - [🏠 Self-Hosting (Community Edition)](#-self-hosting-community-edition) + - [🏠 Local Deployment (Recommended)](#-local-deployment-recommended) + - [⚡ Quick Start (Cloud-Connected)](#-quick-start-cloud-connected) - [🏢 Enterprise](#-enterprise) + - [☁️ Cloud Version](#️-cloud-version) - [✨ Key features](#-key-features) - [🏭 Workforce](#-workforce) - [🧠 Comprehensive Model Support](#-comprehensive-model-support) @@ -82,11 +81,52 @@ Built on [CAMEL-AI][camel-site]'s acclaimed open-source project, our system intr ## **🚀 Getting Started** -There are three ways to get started with Eigent: +> **🔓 Build in Public** — Eigent is **100% open source** from day one. Every feature, every commit, every decision is transparent. We believe the best AI tools should be built openly with the community, not behind closed doors. + +### 🏠 Local Deployment (Recommended) + +The recommended way to run Eigent — fully standalone with complete control over your data, no cloud account required. + +👉 **[Full Local Deployment Guide](./server/README_EN.md)** + +This setup includes: +- Local backend server with full API +- Local model integration (vLLM, Ollama, LM Studio, etc.) +- Complete isolation from cloud services +- Zero external dependencies + +### ⚡ Quick Start (Cloud-Connected) + +For a quick preview using our cloud backend — get started in seconds: + +#### Prerequisites + +- Node.js (version 18-22) and npm + +#### Steps + +```bash +git clone https://github.com/eigent-ai/eigent.git +cd eigent +npm install +npm run dev +``` + +> Note: This mode connects to Eigent cloud services and requires account registration. For a fully standalone experience, use [Local Deployment](#-local-deployment-recommended) instead. + +### 🏢 Enterprise + +For organizations requiring maximum security, customization, and control: + +- **Exclusive Features** (like SSO & custom development) +- **Scalable Enterprise Deployment** +- **Negotiated SLAs** & implementation services + +📧 For further details, please contact us at [info@eigent.ai](mailto:info@eigent.ai). ### ☁️ Cloud Version -The fastest way to experience Eigent's multi-agent AI capabilities is through our cloud platform, perfect for teams and individuals who want immediate access without setup complexity. We'll host the models, APIs, and cloud storage, ensuring Eigent runs flawlessly. +For teams who prefer managed infrastructure, we also offer a cloud platform. The fastest way to experience Eigent's multi-agent AI capabilities without setup complexity. We'll host the models, APIs, and cloud storage, ensuring Eigent runs flawlessly. - **Instant Access** - Start building multi-agent workflows in minutes. - **Managed Infrastructure** - We handle scaling, updates, and maintenance. @@ -100,41 +140,6 @@ The fastest way to experience Eigent's multi-agent AI capabilities is through ou Get started at Eigent.ai → -### 🏠 Self-Hosting (Community Edition) - -For users who prefer local control, data privacy, or customization, this option is ideal for organizations requiring: - -- **Data Privacy** - Keep sensitive data within your infrastructure. -- **Customization** - Modify and extend the platform to fit your needs. -- **Cost Control** - Avoid recurring cloud fees for large-scale deployments. - -#### 1. Prerequisites - -- Node.js (version 18-22) and npm - -#### 2. Quick Start - -```bash -git clone https://github.com/eigent-ai/eigent.git -cd eigent -npm install -npm run dev -``` - -#### 3. Local Development (Use the version that is completely separated from the cloud service) -[server/README_EN.md](./server/README_EN.md) - -### 🏢 Enterprise - -For organizations requiring maximum security, customization, and control: - -- **Commercial License** - [Check our license →](LICENSE) -- **Exclusive Features** (like SSO & custom development) -- **Scalable Enterprise Deployment** -- **Negotiated SLAs** & implementation services - -📧 For further details, please contact us at [info@eigent.ai](mailto:info@eigent.ai). - ## **✨ Key features** Unlock the full potential of exceptional productivity with Eigent’s powerful features—built for seamless integration, smarter task execution, and boundless automation. From 22a8b4fe38a888a7d55e15fa4833e67c4ee83630 Mon Sep 17 00:00:00 2001 From: Wendong-Fan Date: Tue, 13 Jan 2026 22:30:34 +0800 Subject: [PATCH 7/7] update readme license --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c96b9742..8297d605 100644 --- a/README.md +++ b/README.md @@ -311,7 +311,7 @@ Eigent is built on top of [CAMEL-AI.org][camel-ai-org-github]'s research and inf ## **📄 Open Source License** -This repository is licensed under the [**Eigent Open Source License**](LICENSE), based on Apache 2.0 with additional conditions. +This repository is licensed under the [Apache License 2.0](LICENSE). ## 🌐 Community & Contact For more information please contact info@eigent.ai