OpsMineFlow is a local-first task mining and process mining assistant for macOS consultants. It helps with As-Is discovery, work inventory, process visualization, bottleneck analysis, automation candidate discovery, and consulting report drafts without requiring commercial SaaS contracts.
CI status, required checks, and the repository protection procedure are documented in CI / main branch quality gate.
Consulting teams often need to understand real work before proposing BPR, RPA, system renewal, or operating model changes. OpsMineFlow focuses on consent-based, local-only analysis that can be explained to client security, legal, and business teams.
OpsMineFlow is not an employee monitoring tool. It avoids keystroke logging, screenshots, screen recording, microphone use, camera use, and hidden telemetry.
Runtime data stays on the user's Mac. The app and API are designed to use only localhost, local files, and Tauri internal channels. External APIs, telemetry, cloud analytics, remote update checks, and crash uploaders are out of scope.
OpsMineFlow does not integrate with external LLM APIs, local LLMs, or AI agent frameworks. Labeling, mining, scoring, and reporting are rule-based and statistical.
The project is licensed under Apache-2.0. Direct dependencies must be commercial-friendly and compatible with client delivery. AGPL, GPL, LGPL, SSPL, Commons Clause, Business Source License, Polyform, and non-commercial licenses are prohibited for core dependencies.
- CSV event log import
- JSON event log import, including ActivityWatch-style exports
- Optional ActivityWatch localhost import, enabled only by explicit user action
- Explicit start/stop recording of frontmost macOS applications
- Standard event schema
- Mandatory raw-field minimization before local storage and export
- Rule-based business labeling
- App usage and business-label duration analysis
- Directly-Follows Graph generation
- Variant analysis
- Bottleneck candidate detection
- Repeated pattern and app-switching analysis
- Automation candidate scoring
- Markdown, JSON, CSV, Mermaid, SVG, draw.io-oriented exports, and a manual Mermaid handoff ZIP
OpsMineFlow targets a product-ready local workflow: one-command installation, one-command local startup, browser-based control, persistent local storage, diagnostics, recording, import, analysis, and export. Native macOS recording runs only after an explicit WebUI start. Browser extension logging remains a default-off roadmap item documented in docs/product/COLLECTION_ROADMAP.md.
Requirements:
- macOS Sonoma or newer
- Python 3.11 or newer
- Node.js 20 or newer
For normal use, download the signed OpsMineFlow_*.dmg from GitHub Releases, drag OpsMineFlow.app to Applications, and open it. The managed desktop runtime starts and stops its local services itself; no Terminal, Python, Node.js, browser URL, API key, or LLM is required.
Source scripts are for contributors only. In particular, ./scripts/run_local.sh is an explicitly insecure browser-development helper and refuses to run unless OPSMINEFLOW_INSECURE_BROWSER_DEV_API=1 is set. Use it only with disposable test data, never with client or participant data.
Use the 日本語 / English control in the top-right corner. The first launch follows the browser language. Your choice is stored only in the browser and is restored on the next launch.
The seven events shown on the first launch are sample data. They demonstrate the dashboard and are not records from your Mac.
- Reload reads the latest state from the local SQLite database. It does not initialize or delete data.
- Delete sample data or Settings > Delete Data removes events, labels, reviews, and import history.
- After deletion, the empty state remains empty after a reload or app restart.
- Privacy settings remain after data deletion.
To restore the example later, import data/sample/sample_events.csv from the repository.
Use the project selector at the top of the app to choose the client, engagement, or workstream before working with data. Create and name a project for a new engagement. Events, settings, imports, automation reviews, reports, and exports stay within that selected project. The selector is locked while a recording is active, so a session cannot move between projects.
An older database that is upgraded to project-aware storage appears as Migrated data. Review and rename that project when its contents are confirmed.
Use Record work at the top of Home to capture a normal work session:
- Enter a recognizable Case or work unit, such as
2026-06-21 Monthly invoice review. - Enter the Work label, such as
Invoice processing. - Read the collection scope and select the explicit consent checkbox.
- Choose Start recording. If first-run sample data is still present, confirm its removal before recording begins.
- Use Safari, Excel, mail, and other work applications normally. The panel shows the current app, elapsed time, and completed app intervals.
- Choose Stop recording when that work unit is complete.
- Review the result in Dashboard, Process Map, and App Switching.
Recording stores only the frontmost app display name, bundle identifier, start/end timestamps, and duration. It does not capture window titles, URLs, keystrokes, typed text, passwords, clipboard contents, screenshots, screen recordings, microphone audio, or camera video. Opening the WebUI does not start recording, and a stopped session never resumes by itself.
To omit an application, add its display name under Settings > Excluded apps before starting. If the recording agent is unavailable, reinstall it and restart OpsMineFlow:
cd ~/OpsMineFlow && ./scripts/install_mac.shFor existing logs, choose Home > Start collecting data and use CSV/JSON or the explicit ActivityWatch localhost import.
- Prepare a CSV or JSON event log.
- In Finder, select the file and press
Option-Command-Cto copy its full pathname. - Open Home > Data import.
- Choose CSV or JSON and paste the pathname.
- Choose Preview and verify the event count, confidential flags, applications, and durations.
- Choose Import Previewed File only after the preview looks correct.
CSV commonly uses case_id, activity, timestamp_start, timestamp_end, user, app_name, url, and memo. The import replaces the current analysis dataset and records the import in local history.
- Dashboard: totals, application time, business-label time, bottlenecks, and top automation candidates.
- Event Explorer: masked event-level records.
- Process Map: starts, ends, transitions, frequency, duration, and selected activity details.
- App Switching: application transitions and round trips.
- Automation: sort candidates and save Adopt, Hold, Reject, or Unreviewed states.
- Reports: review the locally generated Markdown report.
Open Home > Exports, choose Markdown, JSON, CSV, Mermaid, draw.io, or LLM handoff (ZIP), and preview it. Review masking and confidential flags before choosing Save to Path or Download. The handoff ZIP is a local, manual transfer artifact: it contains aggregate process evidence and a versioned schema so an external LLM can write Mermaid Markdown, but OpsMineFlow never connects to an LLM or sends the file. See the handoff bundle example.
Use Home > Diagnostics for API, WebUI, SQLite storage, dependencies, ports, ActivityWatch, and local-only policy. Use Settings > Delete Data when the selected project's analysis must be removed; it does not affect other projects. After clearing its event data, an unneeded project can be deleted from the project selector. These actions cannot be undone unless the source file still exists and is imported again.
Press Control-C in the startup terminal, or run this from another terminal:
cd ~/OpsMineFlow && ./scripts/stop_local.shFor the full operating flow, see docs/operations/RUNBOOK.md. For problems, see docs/operations/TROUBLESHOOTING.md.
Build macOS app artifacts:
./scripts/package_macos.shPackaging details: docs/operations/PACKAGING_MACOS.md
Run all checks:
./scripts/test.sh
./scripts/lint.sh
./scripts/check_licenses.sh
./scripts/check_no_external_network.sh
./scripts/smoke_local.shRun the local API and desktop UI during development:
./scripts/dev.shCSV imports support columns such as:
case_idactivitytimestamp_starttimestamp_endapp_namedomain
CSV activity labels must come from an explicit activity column. Alias, window title, URL, and memo columns are never accepted as labels and are discarded; a URL can contribute only a normalized domain host for excluded-domain filtering. JSON imports normalize generic arrays and ActivityWatch-style exports into the same safe event profile.
Process maps can be exported as Mermaid and draw.io-compatible mxfile XML. The WebUI can preview export content, download it, or save it to a local path. SVG export is planned as a local rendering step with no external CDN.
Runtime data is stored in a local SQLite database under the user's application data directory by default. Set OPSMINEFLOW_DATA_DIR to use a different local directory.
OpsMineFlow does not collect passwords, keystrokes, input text, screenshots, video, audio, or camera data. Before an event is stored, raw aliases, titles, URLs, memos, freeform metadata, and import filenames are removed; case, source, and event IDs become project-scoped opaque references. All API and export formats use this safe profile, and confidential events fail closed at export. Activity labels and application names remain to describe the observed flow, so review them before sharing with clients.
OpsMineFlow provides local analysis support for consulting and operational improvement. It does not replace legal, HR, security, or compliance review.