-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig.example.yaml
More file actions
137 lines (116 loc) · 6.08 KB
/
Copy pathconfig.example.yaml
File metadata and controls
137 lines (116 loc) · 6.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# cull config
#
# Copy to config.yaml and adjust. Every path here is a container path; the
# Docker volume mounts (docker-compose.yml) map them onto the NAS.
#
# Every field here can also come from an env var (handy for Docker):
# CULL_RAW_DIR, CULL_TRASH_DIR, CULL_KEEP_DIR, CULL_STARRED_DIR,
# CULL_DUPLICATES_DIR, CULL_STAR_ONE_WAY, CULL_KEEP_MODE,
# CULL_CANONICAL_SIDE, CULL_HASH_ALGO,
# CULL_STORE_BACKEND, CULL_INDEX_PATH, CULL_INDEX_CACHE_MB,
# CULL_INDEX_WORKERS, CULL_RESCAN_INTERVAL_MINUTES, CULL_ANOMALY_SIZE_MB,
# CULL_AUTO_TAG_ENABLED, CULL_AUTO_TAG_MODEL_DIR, CULL_AUTO_TAG_THRESHOLD,
# CULL_AUTO_TAG_MAX_TAGS, CULL_AUTO_TAG_AFTER_SCAN, CULL_MANIFEST_PATH,
# CULL_ACTIONLOG_PATH, CULL_THUMB_CACHE_DIR, CULL_THUMB_SIZE,
# CULL_DISPLAY_SIZE, CULL_UPDATE_ENABLED, CULL_UPDATE_DIR, CULL_HOST,
# CULL_PORT, CULL_EXCLUDED_DIR_NAMES (comma-separated).
# Raw output dir. This is the canonical side of the RealTimeSync pair. cull
# only moves files inside this tree, so a move stays a move and doesn't race
# the sync.
raw_dir: /data/output
# Trash/keep siblings. Leave unset to default to <raw_dir>/_trash and
# <raw_dir>/_keep. They must live inside the synced tree on the canonical side.
# trash_dir: /data/output/_trash
# keep_dir: /data/output/_keep
# keep_mode:
# in_place swipe-keep leaves the file where it is (default)
# move swipe-keep moves the file into keep_dir
keep_mode: in_place
# Starred folder. Starring an image COPIES it here (the original stays put).
# Point this at a folder your photo sync watches to push starred images to your
# phone, e.g. an iCloud for Windows folder. Defaults to raw_dir/_starred.
# Note: by default unstarring deletes the copy here, which your sync tool will
# then remove downstream too. Leave unset to use the default.
# starred_dir: C:/Users/me/Pictures/iCloud Photos/Starred
# One-way star: when true, unstar clears the flag but KEEPS the copy in
# starred_dir. Use this when your photo sync propagates deletes and you don't
# want unstarring to remove the image from your phone. Default false (toggle).
star_one_way: false
# Names the canonical side, for clarity and startup logging.
canonical_side: nas
# Content-hash algorithm: blake3 (default) or xxh128. The hash travels with
# the bytes, so identity survives a move.
hash_algo: blake3
# Store backend:
# indexed SQLite index, enables prompt/param search (default)
# filesystem flat-file manifest, no search
# The content-hash id is identical either way, so you can switch without
# losing identity (the index rebuilds itself on first scan).
store_backend: indexed
# SQLite page cache in MB. Bigger keeps more of the index hot in RAM, which is
# the cheap way to speed up listing/search on an HDD-backed NAS (you have the
# RAM; use it). 256 is a safe default.
index_cache_mb: 256
# Parallel hash+parse workers during a scan. 0 = auto (CPU count, capped at 8).
# On spinning disks, if the first cold index thrashes the array, try a lower
# number (e.g. 2-4); on SSD/NVMe you can go higher.
index_workers: 0
# Auto-rescan interval in minutes (0 = off). When set, cull re-indexes
# incrementally on this interval so new images are picked up and dup-checked
# automatically. Only new/changed files are touched, so it's cheap.
rescan_interval_minutes: 0
# Flag files larger than this (MB) as anomalies (huge/upscaled images you may
# want to shrink or delete). Listed at /anomalies and the warning panel.
anomaly_size_mb: 50
# WD auto-tagger (optional). Tags images with NO generation metadata
# (ComfyUI / A1111 / SwarmUI not detected) that have no existing tags.
# Requires: pip install 'cull[tagger]' and model files in auto_tag_model_dir.
# auto_tag_enabled: false
# auto_tag_model_dir: /data/cull/models/wd
# auto_tag_threshold: 0.35
# auto_tag_max_tags: 30
# auto_tag_after_scan: true
# Where collapsing duplicates moves the extra copies (a quarantine you review
# before purging). Defaults to raw_dir/_duplicates. Restoring one from here
# keeps it and stops it being flagged again.
# duplicates_dir: /data/output/_duplicates
# Persistent state. Volume-mount these so they survive a container rebuild.
# manifest_path is only used by the filesystem backend; index_path by the
# indexed backend.
manifest_path: /data/cull/manifest.json
index_path: /data/cull/index.db
actionlog_path: /data/cull/actionlog.jsonl
thumb_cache_dir: /data/cull/thumbs
# Max edge (px) of the card thumbnail. Bigger fills a desktop card sharply at
# the cost of disk/cache; images are never upscaled past their own size.
thumb_size: 1280
# Max edge (px) of the image the card stack actually displays. Without this the
# stack loads the untouched original, which over a tailnet means pushing a
# multi-megabyte PNG to your phone for every card. The original stays one tap
# away in the metadata sheet. Set to 0 to go back to serving originals.
display_size: 2048
# One-tap "update from GitHub" in the app's settings panel. Off by default:
# there is no auth on the API, and this rebuilds and restarts the deployment.
#
# cull can't run nas-update.sh itself — that script removes the very container
# serving the request — so enabling this also means running nas-update-watch.sh
# on the NAS. See NAS_DEPLOY.md.
# update_enabled: false
# Where the app and the watcher exchange the request, log and result. Must be
# inside the mounted state dir so they survive the container being replaced.
# Defaults to the directory holding index_path, plus /update.
# update_dir: /data/cull/update
# Swipe direction -> verb. Grow the gesture set here without touching code.
swipe_map:
right: keep
left: trash
# Bind 0.0.0.0 so the container is reachable over the tailnet.
host: 0.0.0.0
port: 8080
image_extensions: [.png, .jpg, .jpeg, .webp]
# Folders to skip, matched by EXACT name at any depth (not by prefix). cull's
# own folders are reserved here; add your own to skip them, e.g. add "archive".
# (Env: CULL_EXCLUDED_DIR_NAMES="archive,wip" — comma-separated.)
# To skip a one-off folder without editing this list, drop an empty file named
# .cullignore inside it; that folder and its whole subtree are skipped.
excluded_dir_names: [_trash, _keep, _starred, _duplicates, .cull]