{"id":50974674,"url":"https://github.com/xiaojiou176-open/fileman","last_synced_at":"2026-06-19T06:30:42.390Z","repository":{"id":350453847,"uuid":"1203414471","full_name":"xiaojiou176-open/fileman","owner":"xiaojiou176-open","description":"Review-first local AI file organizer with dry-run apply, rollback, and agent-safe MCP.","archived":false,"fork":false,"pushed_at":"2026-05-27T23:02:25.000Z","size":1136,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-28T01:08:05.481Z","etag":null,"topics":["ai-file-organizer","dry-run","local-first","mcp","python","review-first","rollback"],"latest_commit_sha":null,"homepage":"https://xiaojiou176-open.github.io/fileman/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xiaojiou176-open.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":"SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-07T02:45:40.000Z","updated_at":"2026-05-27T23:02:29.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/xiaojiou176-open/fileman","commit_stats":null,"previous_names":["xiaojiou176-open/movi-organizer","xiaojiou176-open/fileyard","xiaojiou176-open/fileorganize","xiaojiou176-open/fileman"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/xiaojiou176-open/fileman","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xiaojiou176-open%2Ffileman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xiaojiou176-open%2Ffileman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xiaojiou176-open%2Ffileman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xiaojiou176-open%2Ffileman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xiaojiou176-open","download_url":"https://codeload.github.com/xiaojiou176-open/fileman/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xiaojiou176-open%2Ffileman/sbom","scorecard":{"id":1245867,"data":{"date":"2026-04-08T03:55:25Z","repo":{"name":"github.com/xiaojiou176-open/movi-organizer","commit":"ecdfd5505484de1977750a4ea52f7088905c8add"},"scorecard":{"version":"v5.3.0","commit":"c22063e786c11f9dd714d777a687ff7c4599b600"},"score":7.7,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/11 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#code-review"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#security-policy"}},{"name":"Dependency-Update-Tool","score":10,"reason":"update tool detected","details":["Info: detected update tool: Dependabot: .github/dependabot.yml:1"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#dependency-update-tool"}},{"name":"Maintained","score":0,"reason":"project was created within the last 90 days. Please review its contents carefully","details":["Warn: Repository was created within the last 90 days."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/cflite_batch.yml:20","Warn: jobLevel 'security-events' permission set to 'write': .github/workflows/cflite_batch.yml:21","Info: jobLevel 'contents' permission set to 'read': .github/workflows/cflite_pr.yml:20","Warn: jobLevel 'security-events' permission set to 'write': .github/workflows/cflite_pr.yml:21","Info: jobLevel 'contents' permission set to 'read': .github/workflows/ci.yml:37","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:26","Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:25","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release.yml:33","Info: jobLevel 'packages' permission set to 'read': .github/workflows/release.yml:34","Info: jobLevel 'contents' permission set to 'read': .github/workflows/reusable-build-runtime-image.yml:40","Info: jobLevel 'packages' permission set to 'read': .github/workflows/reusable-build-runtime-image.yml:41","Info: jobLevel 'actions' permission set to 'read': .github/workflows/scorecards.yml:22","Info: jobLevel 'contents' permission set to 'read': .github/workflows/scorecards.yml:23","Info: jobLevel 'contents' permission set to 'read': .github/workflows/trivy-fs.yml:24","Info: jobLevel 'contents' permission set to 'read': .github/workflows/trufflehog.yml:24","Info: jobLevel 'contents' permission set to 'read': .github/workflows/zizmor.yml:24","Info: topLevel 'contents' permission set to 'read': .github/workflows/cflite_batch.yml:9","Info: topLevel 'contents' permission set to 'read': .github/workflows/cflite_pr.yml:9","Info: topLevel 'contents' permission set to 'read': .github/workflows/ci.yml:13","Info: topLevel 'packages' permission set to 'read': .github/workflows/ci.yml:14","Info: topLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:13","Info: topLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:14","Info: topLevel 'contents' permission set to 'read': .github/workflows/dependency-review.yml:8","Info: topLevel 'pull-requests' permission set to 'read': .github/workflows/dependency-review.yml:9","Info: topLevel 'contents' permission set to 'read': .github/workflows/live-integration.yml:7","Info: topLevel 'packages' permission set to 'read': .github/workflows/live-integration.yml:8","Info: topLevel 'packages' permission set to 'read': .github/workflows/mutation-manual.yml:8","Info: topLevel 'contents' permission set to 'read': .github/workflows/mutation-manual.yml:7","Info: topLevel 'contents' permission set to 'read': .github/workflows/nightly-drift-audit.yml:10","Info: topLevel 'contents' permission set to 'read': .github/workflows/pre-commit.yml:11","Info: topLevel 'packages' permission set to 'read': .github/workflows/pre-commit.yml:12","Info: topLevel 'contents' permission set to 'read': .github/workflows/release.yml:21","Info: topLevel 'packages' permission set to 'read': .github/workflows/release.yml:22","Info: topLevel 'contents' permission set to 'read': .github/workflows/reusable-build-runtime-image.yml:32","Info: topLevel 'packages' permission set to 'read': .github/workflows/reusable-build-runtime-image.yml:33","Info: topLevel 'actions' permission set to 'read': .github/workflows/scorecards.yml:10","Info: topLevel 'contents' permission set to 'read': .github/workflows/scorecards.yml:11","Info: topLevel 'contents' permission set to 'read': .github/workflows/trivy-fs.yml:13","Info: topLevel 'contents' permission set to 'read': .github/workflows/trufflehog.yml:13","Info: topLevel 'contents' permission set to 'read': .github/workflows/upstream-governance-manual.yml:7","Info: topLevel 'contents' permission set to 'read': .github/workflows/zizmor.yml:13"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#token-permissions"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#license"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#packaging"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":10,"reason":"all dependencies are pinned","details":["Info: 125 out of 125 GitHub-owned GitHubAction dependencies pinned","Info:  10 out of  10 third-party GitHubAction dependencies pinned","Info:   5 out of   5 npmCommand dependencies pinned","Info:   3 out of   3 containerImage dependencies pinned","Info:   8 out of   8 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#signed-releases"}},{"name":"Fuzzing","score":10,"reason":"project is fuzzed","details":["Info: ClusterFuzzLite integration found","Info: PythonAtherisFuzzer integration found: tests/fuzz/fuzz_safe_join.py:6"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#branch-protection"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (5) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#sast"}},{"name":"Contributors","score":3,"reason":"project has 1 contributing companies or organizations -- score normalized to 3","details":["Info: found contributions from: xiaojiou176-open"],"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#contributors"}},{"name":"CI-Tests","score":10,"reason":"5 out of 5 merged PRs checked by a CI test -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#ci-tests"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2026-04-10T13:34:51.127Z","repository_id":350453847,"created_at":"2026-04-10T13:34:51.127Z","updated_at":"2026-04-10T13:34:51.127Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34520431,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-19T02:00:06.005Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-file-organizer","dry-run","local-first","mcp","python","review-first","rollback"],"created_at":"2026-06-19T06:30:37.976Z","updated_at":"2026-06-19T06:30:42.382Z","avatar_url":"https://github.com/xiaojiou176-open.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://em-content.zobj.net/source/apple/391/file-folder_1f4c1.png\" width=\"120\" alt=\"file folder\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003efileman\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003emessy folders in, organized library out\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/xiaojiou176-open/fileman/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/xiaojiou176-open/fileman?style=flat\u0026color=yellow\" alt=\"Stars\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/xiaojiou176-open/fileman/commits/main\"\u003e\u003cimg src=\"https://img.shields.io/github/last-commit/xiaojiou176-open/fileman?style=flat\" alt=\"Last Commit\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/xiaojiou176-open/fileman?style=flat\" alt=\"License\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#what-you-get\"\u003eWhat You Get\u003c/a\u003e •\n  \u003ca href=\"#install\"\u003eInstall\u003c/a\u003e •\n  \u003ca href=\"#how-it-work\"\u003eHow It Work\u003c/a\u003e •\n  \u003ca href=\"#ecosystem\"\u003eEcosystem\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\nfileman is a local-first file organizer. Drop a messy folder. Get a manifest, a plan, and a one-click apply. Your originals never move until you say so.\n\n```\n┌──────────────────────────────────────┐\n│  LOCAL-FIRST          ████████ 100%  │\n│  SOURCE-TRACEABLE     ████████ 100%  │\n│  TYPING REQUIRED      ░░░░░░░░   0%  │\n│  VIBES                ████████ ZERO  │\n│                                FILLER│\n└──────────────────────────────────────┘\n```\n\n\u003e AI-assisted file triage. Manifest-first, never destructive.\n\n## What You Get\n\n| Surface | What |\n|---|---|\n| `fileman cli` | Scan, plan, manifest. Apply only when you nod. |\n| `fileman webui` | Browse the plan. Approve, edit, or send back for another pass. |\n| `fileman mcp` | Same engine, exposed as an MCP server for any agent. |\n| `contracts \u0026 manifest` | Plans are diffable. Plans are reviewable. Plans are receipts. |\n| `public skills` | Drop into Claude/Codex/OpenClaw. Hand it a folder. Get a library. |\n\n\u003e [!IMPORTANT]\n\u003e Local-first by default. No silent telemetry. No cloud round-trip. Your data stays on your machine until you explicitly ship it somewhere.\n\n## Install\n\n```bash\ngit clone https://github.com/xiaojiou176-open/fileman.git\ncd fileman\n# follow the per-stack quickstart in INSTALL.md or docs/\n```\n\nThree commands. No `curl | sh`. No login. Read what you run.\n\nInstall break? Open your favorite agent and say *\"Read AGENTS.md and bootstrap fileman for me.\"* Agent fix own brain. Long version: [`docs/`](./docs/).\n\n## How It Work\n\nThe repo is seven layers — exactly the seven commits in `git log`. New work goes in as small named PRs. No 50-file mystery commits.\n\n| Layer | What |\n|---|---|\n| `chore: scaffold` | License, governance, hygiene gates, CI scaffolding. |\n| `feat(core)` | The primary engine. The reason fileman exists. |\n| `feat(modules)` | Packages, adapters, services, plugins. The second floor. |\n| `feat(contracts)` | Schemas, configs, public boundaries. Other code talks here. |\n| `test:` | Receipts. Everything in this layer must run. |\n| `feat(ops)` | Scripts, infra, CI helpers, build glue. |\n| `docs:` | Public docs surface. The pretty face. |\n\n`git log` reads like a building floor plan. Look once, know the whole shape.\n\n## Ecosystem\n\nfileman lives in the **yard family**: seven yards. one philosophy: structured input, structured output, structured proof.\n\n| Repo | What |\n|---|---|\n| [**switchyard**](https://github.com/xiaojiou176-open/switchyard) | model \u0026 agent runtime switch board |\n| [**browserclickyard**](https://github.com/xiaojiou176-open/browserclickyard) | your AI clicks, your browser obeys |\n| [**noteyard**](https://github.com/xiaojiou176-open/noteyard) | your Apple Notes never really die |\n| [**dealyard**](https://github.com/xiaojiou176-open/dealyard) | let prices fight, you sit and watch |\n| [**docyard**](https://github.com/xiaojiou176-open/docyard) | docs site in, markdown out, no scraping by hand |\n| [**fileman**](https://github.com/xiaojiou176-open/fileman) *(you here)* | messy folders in, organized library out |\n| [**proofyard**](https://github.com/xiaojiou176-open/proofyard) | every claim ships with its receipt |\n\nCross-family taste:\n[**BeamMe**](https://github.com/xiaojiou176-open/BeamMe) ·\n[**BrewMe**](https://github.com/xiaojiou176-open/BrewMe) ·\n[**OpenVibeCoding**](https://github.com/xiaojiou176-open/OpenVibeCoding) ·\n[**proofyard**](https://github.com/xiaojiou176-open/proofyard).\n\n## Star This Repo\n\nIf fileman saves you a click, an hour, or a headache — star costs zero. Fair trade. ⭐\n\n[![Star History Chart](https://api.star-history.com/svg?repos=xiaojiou176-open/fileman\u0026type=Date)](https://star-history.com/#xiaojiou176-open/fileman\u0026Date)\n\n## Also by Yifeng[Terry] Yu\n\n- **[switchyard](https://github.com/xiaojiou176-open/switchyard)** — model \u0026 agent runtime switch board\n- **[browserclickyard](https://github.com/xiaojiou176-open/browserclickyard)** — your AI clicks, your browser obeys\n- **[BeamMe](https://github.com/xiaojiou176-open/BeamMe)** — beam your agent config to any planet\n- **[BrewMe](https://github.com/xiaojiou176-open/BrewMe)** — wake up, news already brewed\n- **[OpenVibeCoding](https://github.com/xiaojiou176-open/OpenVibeCoding)** — AI codes overnight, you ship in the morning\n\n## License\n\nMIT — small print, big freedom.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxiaojiou176-open%2Ffileman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxiaojiou176-open%2Ffileman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxiaojiou176-open%2Ffileman/lists"}