FranxAgent
Health Warn
- License — License: GPL-3.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Fail
- rm -rf — Recursive force deletion command in knowledge/tools/command/tool.py
Permissions Pass
- Permissions — No dangerous permissions requested
This tool is a lightweight AI agent framework that interacts with local files, executes shell commands, searches the web, and supports remote access via Cloudflare Tunnel.
Security Assessment
Overall Risk: Medium to High. While the project uses JWT and RSA encryption for remote sessions, it handles highly sensitive operations. The agent actively reads local files and executes arbitrary shell commands. A significant concern is the presence of a recursive force deletion command (`rm -rf`) inside its command tool, which could lead to catastrophic data loss if triggered by an AI hallucination or malicious prompt. Additionally, it initiates external network requests through an integrated Cloudflare Tunnel (exposing your local machine to the internet) and via DuckDuckGo for searches. No hardcoded secrets were found, and it claims to prohibit direct file deletion, though the `rm -rf` flag directly contradicts this safety claim.
Quality Assessment
The repository is actively maintained, with very recent updates pushed by the developer. It is properly licensed under GPL-3.0. However, community trust and visibility are currently very low, as it only has 5 stars on GitHub. As an early-stage project with minimal public scrutiny, it should be approached carefully by prospective users.
Verdict
Use with caution: the agent executes shell commands and contains risky deletion operations, making it unsuitable for deployment without strict manual oversight and testing.
一个简单高效的AI Agent助手
FranxAgent 🤖
Let AI work for you like a partner – simple, secure, low cost.
Now you can control the AI on your computer directly from your phone – no public IP, no port forwarding, one‑click secure remote access.
FranxAgent is a lightweight AI agent framework that enables AI to read files, execute commands, search the web, understand multimodal content, and truly interact with the world through the MCP protocol.
Now it also features:
- 🌐 One‑click intranet penetration: integrated Cloudflare Tunnel – start it and get a public URL, access from your phone or tablet anytime, anywhere.
- 🔐 Military‑grade security authentication: RSA public‑key encryption + JWT short‑lived tokens, supports “refresh‑to‑re‑login” mode, completely eliminating long‑term token leakage risks.
- 📱 Perfect mobile adaptation: bottom liquid‑glass dock, breathing dot animation, touch optimisation – same experience on phone and desktop.
- 🧠 Echoes of Thoughts knowledge base: all tool descriptions, skill files, and conversation histories are automatically vectorised, using hybrid search (vector semantics + keyword matching) for long‑term memory and cross‑session recall.
From now on, AI can not only go “From Words to Worlds”, but also “let every echo become the nourishment of thought”.
✨ Core Features
- 📱 Zero‑configuration remote access: integrated Cloudflare Tunnel – one‑click public URL, no public IP or router settings needed. Access FranxAgent on your computer directly from your phone/tablet.
- 🔐 Military‑grade security authentication: RSA asymmetric encryption + JWT short‑lived tokens, supports “refresh‑to‑re‑login” (token stored only in memory, cleared on page refresh), completely prevents long‑term control after token leakage.
- 🧠 Intelligent memory & hybrid search: conversation history automatically stored in vector database, combined with FTS5 keyword search for precise cross‑session recall.
- 🛠️ Rich built‑in tools:
time,read,write,command,search,similarity,ett(multimodal understanding),beijing_subway, etc., extensible. - 🌐 MCP protocol support: integrate any stdio MCP server with a simple configuration – AI automatically learns to use all its tools.
- ⏰ Scheduled tasks: runs in background thread, supports daily recurring tasks – AI executes commands at specified times.
- 📚 Skill system: Markdown files in
knowledge/are automatically merged into the system prompt, giving AI extra knowledge, rules, or workflows. - 🔒 Security first:
commandtool prohibits direct file deletion, suggests moving instead; high‑risk operations can require approval. - 🕸️ Free web search: DuckDuckGo integration, no API key needed.
- 🖼️ Multimodal understanding: analyse images, videos, documents (Word, Excel, PDF, etc.).
- ⚙️ Minimal configuration: one
config.jsonhandles all settings. - 📦 Lightweight dependencies: only Python standard library +
openaiSDK. - 💻 Cross‑platform: Windows / Linux / macOS.
🚀 Quick Start
1. Clone the repository
git clone https://github.com/xhdlphzr/FranxAgent.git
cd FranxAgent
2. Install dependencies
Windows users double‑click start.bat, macOS users double‑click start.sh – virtual environment and dependencies will be set up automatically.
3. Configure
Modify config.json according to your needs (see configuration section below).
4. Run
Windows users double‑click run.bat, macOS users double‑click run.sh.
After startup, the terminal will display a public URL (e.g. https://xxxx.trycloudflare.com). Open that link on your phone browser – the first time you will be guided to set a password, then log in and control the AI on your computer from your phone.
💡 Security tip: JWT tokens are valid for only 1 hour and are stored only in browser memory – they are lost on page refresh. Do not use remote access on public computers.
5. Use
Type your question in the chat box – the AI will automatically call tools to help you. The mobile experience is identical to the desktop version, with touch, swipe, and voice input support (via the phone’s own input methods).
⚠️ Disclaimer
The Cloudflare Tunnel remote access feature provided by FranxAgent is offered as a technical convenience. Users assume all risks associated with network exposure, device loss, password leakage, third‑party attacks, or any other cause that may lead to damage to devices, data, or personal safety. Before use, ensure that:
- You set a strong password and change it regularly;
- You enable remote access only on trusted networks and devices;
- You understand and accept that any networked service may have unknown security vulnerabilities.
The project authors and contributors accept no liability for any direct or indirect losses arising from the use of this software. By using this software, you indicate that you have read and agreed to this disclaimer.
⚙️ Configuration
In config.json, you can adjust the following parameters:
| Field | Type | Default | Description |
|---|---|---|---|
api_key |
string | - | API key (required). For Ollama, any value works. |
base_url |
string | - | API base URL (required). For Ollama: http://localhost:11434/v1, for GLM: https://open.bigmodel.cn/api/paas/v4. |
model |
string | - | Model name (required). Recommended: glm-4.7-flash, qwen2.5:7b, etc. |
settings |
string | "You are a helpful AI assistant. 你是一个有用的AI助手。" |
System prompt defining AI’s role or behaviour. |
temperature |
float | 0.8 |
Randomness, range 0–2 (but recommended 0–1). Lower = more deterministic, higher = more creative. |
thinking |
bool | false |
Enable deep thinking mode (GLM models only). The model outputs reasoning steps but responds slightly slower. |
max_iterations |
int | 100 |
Max tool call iterations to prevent infinite loops. |
threshold |
int | 20 |
Message count threshold for history compression. When exceeded, the oldest 10 messages are summarised. |
knowledge_k |
int | 5 |
Number of knowledge snippets retrieved per conversation for knowledge‑augmented prompts. Larger values inject more system prompt but may bring more relevant info. |
mcp_servers |
list | [] |
List of MCP server configurations, each with name, command, args (optional). Example: [{"name": "windows-mcp", "command": "uvx", "args": ["windows-mcp"]}]. |
Multimodal tool independent configuration (optional)
Inside the tools field, you can specify separate parameters for ett (multimodal understanding). If not set, the top‑level configuration is used:
{
"tools": {
"ett": {
"api_key": "your-ett-api-key",
"base_url": "https://open.bigmodel.cn/api/paas/v4",
"model": "glm-4.6v-flash",
"temperature": 0.8,
"thinking": false,
"max_retries": 5
}
}
}
⚠️ Note: The multimodal tool
ettcurrently only supports GLM series models (e.g.glm-4.6v-flash). Ensure you have configured the correct API key and model name.
Example configuration (using GLM + Windows‑MCP):
{
"api_key": "your-zhipu-api-key",
"base_url": "https://open.bigmodel.cn/api/paas/v4",
"model": "glm-4.7-flash",
"temperature": 0.8,
"thinking": false,
"max_iterations": 100,
"threshold": 20,
"knowledge_k": 5,
"settings": "You are a helpful AI assistant. 你是一个有用的AI助手。",
"tools": {
"ett": {
"api_key": "your-zhipu-api-key",
"model": "glm-4.6v-flash",
"temperature": 0.8,
"thinking": false,
"max_iterations": 100,
"max_retries": 20
}
},
"mcp_servers": [
{
"name": "windows-mcp",
"command": "uvx",
"args": ["windows-mcp"]
}
]
}
💡 Tip: After saving configuration changes, they take effect in the next conversation – no need to restart the service.
💡 Model recommendation: Use
glm-4.7-flashfor conversation andglm-4.6v-flashfor vision tasks.
🛠️ Tool Descriptions
| Tool | Purpose | Security / Notes |
|---|---|---|
time |
Current date/time | Read‑only, safe |
read |
Read file content | Read‑only, returns file content |
write |
Write/append to file | Auto‑creates parent directories; overwrite/append options |
command |
Execute system command | ❌ Direct deletion blocked; suggests moving instead. Supports timeout. |
search |
Web search (DuckDuckGo) | Free, no API key. Returns title, snippet, URL. |
similarity |
String similarity (rolling hash) | Window size 3 bytes, returns percentage. |
add_task |
Add scheduled task | Parameters: content, time (HH:MM) |
del_task |
Delete scheduled task | Delete by ID, auto‑renumber remaining tasks |
ett |
Multimodal understanding | Analyze images, videos, documents (Word/Excel/PDF). Requires Zhipu GLM‑4.6V‑Flash. Supports public URL or local file (auto base64). |
beijing_subway |
Beijing subway route planning | Input start and end station names, returns optimal route (peak/off‑peak speed considered). Requires station.json and graph.txt in knowledge/tools/beijing_subway/ and geopy installed. |
MCP tool integration
Add any MCP server (stdio mode) in config.json:
{
"mcp_servers": [
{
"name": "windows-mcp",
"command": "uvx",
"args": ["windows-mcp"]
}
]
}
After startup, the AI automatically discovers all tools from these servers and calls them via the unified tools tool. No extra configuration – just say “take a screenshot”.
Remote hardware (e.g., Raspberry Pi)
To control remote hardware via SSH, add a configuration like:
{
"mcp_servers": [
{
"name": "raspberry-gpio",
"command": "ssh",
"args": ["-T", "pi@raspberry-ip", "python", "/home/pi/raspberry_mcp.py"]
}
]
}
Notes:
- All tools (built‑in + MCP) are called via the single
toolstool, saving tokens. - Built‑in tool names are fixed (e.g.,
read,write). MCP tools useserver/toolformat (e.g.,windows-mcp/snapshot). commandhas built‑in safety; deleting requires moving.similarityhelps with deduplication and checking.- Scheduled tasks run in background, daily repetition, no persistent user online required.
ettonly supports Zhipu GLM models; ensure correcttools.ettconfiguration.
🧠 Skill System
FranxAgent loads Markdown files from knowledge/skills/ and merges them into the system prompt. You can write .md files to inject domain knowledge, behavior rules, workflows, etc., customising the AI's behaviour.
Usage:
- Create
skills/underknowledge/if not exists. - Place your Markdown files there (e.g.,
coding_style.md,company_rules.md). You can copy some skills from the skills branch (note: these skills undergo some review, but FranxAgent is not responsible for their content). - Start FranxAgent – all
.mdfiles are automatically read and stored into the database, ready for retrieval.
Example:
Suppose skills/coding_style.md contains:
Code style: Use 4‑space indentation, snake_case for variables, camelCase for functions.
The AI will then follow these style conventions in subsequent conversations.
⚠️ Disclaimer: Skill files are provided by users; FranxAgent assumes no responsibility for their content. Ensure the content complies with laws and does not contain sensitive or harmful information.
🧠 Memory & Scheduled Tasks
- Long‑term memory: FranxAgent no longer relies on
memory.txt. Complete conversation history is automatically saved toknowledge/memories/(one.mdfile per session). On next startup, these histories are loaded into the vector knowledge base, allowing the AI to recall previous conversations via hybrid retrieval (vector semantics + keyword matching). - History compression: When messages exceed
threshold, the first half is compressed into a summary to keep context within limits. - Scheduled tasks: Background thread checks
tasks.jsonevery 10 seconds; executes commands at specified times (HH:MM). Supports daily repetition without duplication.
🧪 Usage Examples
User:
List files in the current directory
AI: Calls tools(tool_name="command", arguments={"command": "ls"}) and returns the list.
User:
Remind me to drink a glass of water every morning at 8am
AI: Calls tools(tool_name="add_task", arguments={"content": "Remind me to drink water", "time": "08:00"}), task added.
User:
Compute the similarity between "hello world" and "hello word"
AI: Calls tools(tool_name="similarity", arguments={"text1": "hello world", "text2": "hello word"}), returns 33.33%.
User:
Search for Python asynchronous programming
AI: Calls tools(tool_name="search", arguments={"query": "Python asynchronous programming"}), returns results.
User:
What is in this picture? https://example.com/dog.jpg
AI: Calls tools(tool_name="ett", arguments={"url": "https://example.com/dog.jpg", "prompt": "What is in this picture?", "type": "image_url"}), returns description.
User:
Analyze the content of this Word document (local path provided)
AI: Calls tools(tool_name="ett", arguments={"url": "C:/docs/report.docx", "prompt": "Analyze this document", "type": "file_url"}), returns summary.
User:
(After configuring Windows‑MCP) Take a screenshot
AI: Calls tools(tool_name="windows-mcp/snapshot"), returns screenshot result.
🤝 Contributing
Issues and Pull Requests are welcome! Please keep code clear and update relevant documentation.
📄 License
🙏 Acknowledgements
- All friends who use and support FranxAgent
- xhdlphzr – a busy coder
- zhiziwj – provided a valuable suggestion (though not implemented) and also implemented a feature
- humanity687 – raised several constructive issues, all of which have been studied and fixed
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found