flowise¶
Flowise is a Node.js visual agent and chatflow builder (npx flowise start, Docker); its
Agentflow v2 is the second-generation agent canvas. It came into the catalog from the agent
framework sweep for issue #64; see
research/frameworks.md for the frameworks that got no catalog line. Its
parser is in the backlog (issue 68).
Source and evidence¶
FlowiseAI/Flowise, commit
9291856d1ea4a4ceea9f8fef8ce14f4f6c81e8eb.
Licence: Apache 2.0, except packages/server/src/enterprise, which is
commercial
(LICENSE.md:1-7).
All claims are from source.
Flowise executes tools on the host. Custom JavaScript functions and tools
run in-process in a vm2 NodeVM unless E2B_APIKEY is set
(components utils.ts:1594-1606,
1791),
and MCP stdio servers are spawned on the host, with an allow-list for
custom scripts
(MCP/core.ts:117,
248-258).
Observed¶
- No real install: nothing was installed or run.
Source reviews¶
- 2026-10-19: HEAD is still
9291856, re-read from source for permission, model, past-use, sync and deletion records. It added Database detail and Scratch directories.
Collection¶
Per-user storage¶
The home is HOME, or USERPROFILE on Windows
(server utils/index.ts:114-125),
so ~/.flowise is used on every OS.
| Path | Holds | Default or opt-in |
|---|---|---|
.flowise/database.sqlite |
all app data: tables chat_message (content, usedTools, agentReasoning), execution (executionData), credential (encryptedData), chat_flow, tool (custom tool code), custom_mcp_server, and login_sessions (DataSource.ts:16-30, 90-99, Init.ts:6-16, AddExecutionEntity.ts:6, ChatMessage.ts:25-38, SessionPersistance.ts:88-97) |
default (DATABASE_TYPE unset or sqlite) |
.flowise/encryption.key |
AES key for credential.encryptedData (utils/index.ts:1580-1588) |
default |
.flowise/token_hash_secret.key, express_session_secret.key, jwt_auth_token_secret.key, jwt_refresh_token_secret.key |
auth signing secrets (authSecrets.ts:29-56, utils/index.ts:1669-1671, 1726-1735) | default |
.flowise/storage, .flowise/uploads |
chat uploads and generated files (storageUtils.ts:50-53, utils/index.ts:2018-2022) | default |
.flowise/vectorstore |
Faiss and SimpleStore indexes (validator.ts:213-224) | default when the node is used |
Logs are not under the home. They go to <install>/packages/server/logs
(or LOG_PATH), which for npx is inside the npx cache
(utils/config.ts:10,
services/log/index.ts:73-75).
Scratch directories¶
Flowise has no agent working directory. Chat
uploads and generated files go to per-chatflow, per-chat directories
under .flowise/storage, which the .flowise line collects; no row names
them as a project.
Docker¶
The README compose bind-mounts the host's ~/.flowise to
/home/node/.flowise
(docker/docker-compose.yml:162-165),
so the home line already covers it. The only named volume is redis_data,
in the queue compose
(docker-compose-queue-prebuilt.yml:9-10,
340-342);
it is generic and not matched. An inferred *flowise* volume line, like
the inferred block for Tabby and others, was considered and not added:
the documented deployment uses a bind mount.
Database detail¶
The records inside database.sqlite, at
9291856:
- Per-call decisions. A Human Input node (
humanInputAgentflow) stops the run and stores the request aschat_message.action, JSON with anid, amappingofapprove: "Proceed"andreject: "Reject", and the node's id, label and input (buildAgentflow.ts:1409-1425, 2406-2407, ChatMessage.ts:49-50). The answer is ahumanInputoftypeproceedorreject, astartNodeIdand optionalfeedback(components Interface.ts:492-496). On resume the stopped step is dropped from the execution data and the node's new output recordsconditionswithisFulfilledon the chosen outcome and the feedback or the type ascontent(buildAgentflow.ts:1195-1202, HumanInput.ts:155-190). The user message saved for the resume is the feedback, or a single space when there was none, sochat_messagealone does not say which button was pressed (buildAgentflow.ts:2345-2365). An Agent node whose tool hasagentSelectedToolRequiresHumanInputset stops before the call with the call's JSON in its output andisWaitingForHumanInput;rejectremoves the tool,proceedruns it (Agent.ts:266, 2241-2268, 2631-2642). No standing allow list exists apart from the MCP custom-script allow list cited in Source and evidence, which is server configuration. - Model. An Agent node's step in
execution.executionDatakeeps the node's inputs, among themagentModelandagentModelConfig, whosemodelormodelNameis the model id (Agent.ts:695-700, 1506-1514).chat_messagehas no model column (ChatMessage.ts:8-66), so a chatflow's model is otherwise only in the node inputs of its canvas JSON,chat_flow.flowData. - Executions.
execution(executionDataJSON,stateone ofINPROGRESS,FINISHED,ERROR,TERMINATED,TIMEOUT,STOPPED,agentflowId,sessionId,action,createdDate,stoppedDate) holds every Agentflow v2 run step by step (Execution.ts:7-46, server Interface.ts:23).chat_message.executionIdjoins it to the chat. Besidechat_message, the primary store,execution,chat_message_feedback,upsert_historyand the two schedule tables below record past use. - Schedules.
schedule_record(triggerTypeAGENTFLOW,targetId,cronExpression,timezone,enabled) andschedule_trigger_log(scheduleRecordId,executionId,statusone ofQUEUED,RUNNING,SUCCEEDED,FAILED,SKIPPED,scheduledAt) record scheduled Agentflow runs, which have no user message of their own (ScheduleRecord.ts:5-37, ScheduleTriggerLog.ts:6-51). - Third-party tracing.
chat_flow.analyticnames the tracing services a chatflow reports to (LangSmith, Langfuse, Lunary, LangWatch, Arize, Phoenix, Opik), and tracing environment variables add more (ChatFlow.ts:39, handler.ts:518-532). The runs are then also in that service's account; no local row records the remote run id. - Deletion. Clearing a chat removes its
chat_message_feedbackrows, its upload directory and itschat_messagerows, and leaves itsexecutionrows (chat-messages/index.ts:110-135); deleting messages by id also deletes the executions they name (144-180). Deleting a chatflow removes its messages, feedback and upsert history (chatflows/index.ts:135-147).
Credentials¶
.flowise/encryption.keyand the four*_secret.keyfiles: flagged.database.sqliteholds encrypted credentials and the chat history together, so it is collected unflagged; withencryption.keythecredentialrows can be decrypted.
Exclusions¶
.flowise/vectorstore.
Project-local files¶
None. Flows are rows in database.sqlite.
Where the project path is recorded¶
Nowhere; Flowise has no project concept.
Parsing¶
Flowise is backlog: its parser is
issue 68, and nothing it writes is parsed
yet. Everything a parser would read is in .flowise/database.sqlite
(Database detail); there is no line-oriented file under the home, and the
logs are outside it (Per-user storage).
Confidence¶
- High for every path and table (source). Nothing material was left undetermined.