## What Fixes #12409. Implements admin CLI support for: - `list vars;` - `show var <name-or-prefix>;` - `set var <name> <value>;` ## Changes - Wire Go CLI variable commands to the admin API. - Support integer and quoted string values in `SET VAR`. - Return variable rows as `data_type`, `name`, `setting_type`, and `value`. - Add exact-name lookup with prefix fallback for `SHOW VAR`. - Validate values by stored data type: `string`, `integer`, `bool`, and `json`. - Keep the legacy Python admin CLI/server behavior aligned. - Update admin CLI docs and add focused tests. ## Verification - `go test -count=1 ./internal/cli` - `python3.12 -m py_compile admin/server/services.py admin/server/routes.py api/db/services/system_settings_service.py admin/client/parser.py admin/client/ragflow_client.py` - Python admin CLI parser smoke test for `SET VAR`, quoted values, `SHOW VAR`, and `LIST VARS`. - Attempted `./run_go_tests.sh`; local environment is missing native tokenizer/linker artifacts: - `internal/cpp/cmake-build-release/librag_tokenizer_c_api.a` - `-lstdc++` Co-authored-by: Jin Hai <haijin.chn@gmail.com>
RAGFlow Admin Service & CLI
Introduction
Admin Service is a dedicated management component designed to monitor, maintain, and administrate the RAGFlow system. It provides comprehensive tools for ensuring system stability, performing operational tasks, and managing users and permissions efficiently.
The service offers real-time monitoring of critical components, including the RAGFlow server, Task Executor processes, and dependent services such as MySQL, Infinity, Elasticsearch, Redis, and MinIO. It automatically checks their health status, resource usage, and uptime, and performs restarts in case of failures to minimize downtime.
For user and system management, it supports listing, creating, modifying, and deleting users and their associated resources like knowledge bases and Agents.
Built with scalability and reliability in mind, the Admin Service ensures smooth system operation and simplifies maintenance workflows.
It consists of a server-side Service and a command-line client (CLI), both implemented in Python. User commands are parsed using the Lark parsing toolkit.
- Admin Service: A backend service that interfaces with the RAGFlow system to execute administrative operations and monitor its status.
- Admin CLI: A command-line interface that allows users to connect to the Admin Service and issue commands for system management.
Starting the Admin Service
Launching from source code
-
Before start Admin Service, please make sure RAGFlow system is already started.
-
Launch from source code:
python admin/server/admin_server.pyThe service will start and listen for incoming connections from the CLI on the configured port.
Using docker image
-
Before startup, please configure the
docker_compose.ymlfile to enable admin server:command: - --enable-adminserver -
Start the containers, the service will start and listen for incoming connections from the CLI on the configured port.
Using the Admin CLI
-
Ensure the Admin Service is running.
-
Install ragflow-cli.
pip install ragflow-cli==0.25.4 -
Launch the CLI client:
ragflow-cli -h 127.0.0.1 -p 9381You will be prompted to enter the superuser's password to log in. The default password is admin.
Parameters:
-
-h: RAGFlow admin server host address
-
-p: RAGFlow admin server port
-
Supported Commands
Commands are case-insensitive and must be terminated with a semicolon (;).
Service Management Commands
LIST SERVICES;- Lists all available services within the RAGFlow system.
SHOW SERVICE <id>;- Shows detailed status information for the service identified by
<id>.
- Shows detailed status information for the service identified by
User Management Commands
-
LIST USERS;- Lists all users known to the system.
-
SHOW USER '<username>';- Shows details and permissions for the specified user. The username must be enclosed in single or double quotes.
-
CREATE USER <username> <password>;- Create user by username and password. The username and password must be enclosed in single or double quotes.
-
DROP USER '<username>';- Removes the specified user from the system. Use with caution.
-
ALTER USER PASSWORD '<username>' '<new_password>';- Changes the password for the specified user.
-
ALTER USER ACTIVE <username> <on/off>;- Changes the user to active or inactive.
Data and Agent Commands
LIST DATASETS OF '<username>';- Lists the datasets associated with the specified user.
LIST AGENTS OF '<username>';- Lists the agents associated with the specified user.
Meta-Commands
Meta-commands are prefixed with a backslash (\).
\?or\help- Shows help information for the available commands.
\qor\quit- Exits the CLI application.
Examples
admin> list users;
+-------------------------------+------------------------+-----------+-------------+
| create_date | email | is_active | nickname |
+-------------------------------+------------------------+-----------+-------------+
| Fri, 22 Nov 2024 16:03:41 GMT | jeffery@infiniflow.org | 1 | Jeffery |
| Fri, 22 Nov 2024 16:10:55 GMT | aya@infiniflow.org | 1 | Waterdancer |
+-------------------------------+------------------------+-----------+-------------+
admin> list services;
+-------------------------------------------------------------------------------------------+-----------+----+---------------+-------+----------------+
| extra | host | id | name | port | service_type |
+-------------------------------------------------------------------------------------------+-----------+----+---------------+-------+----------------+
| {} | 0.0.0.0 | 0 | ragflow_0 | 9380 | ragflow_server |
| {'meta_type': 'mysql', 'password': 'infini_rag_flow', 'username': 'root'} | localhost | 1 | mysql | 5455 | meta_data |
| {'password': 'infini_rag_flow', 'store_type': 'minio', 'user': 'rag_flow'} | localhost | 2 | minio | 9000 | file_store |
| {'password': 'infini_rag_flow', 'retrieval_type': 'elasticsearch', 'username': 'elastic'} | localhost | 3 | elasticsearch | 1200 | retrieval |
| {'db_name': 'default_db', 'retrieval_type': 'infinity'} | localhost | 4 | infinity | 23817 | retrieval |
| {'database': 1, 'mq_type': 'redis', 'password': 'infini_rag_flow'} | localhost | 5 | redis | 6379 | message_queue |
+-------------------------------------------------------------------------------------------+-----------+----+---------------+-------+----------------+