Skip to Content
⚠️Active Development Notice: TimeTiles is under active development. Information may be placeholder content or not up-to-date.
Self-HostingUsage Limits

Usage Limits

Trust levels, quotas, rate limiting, and HTTP caching configuration. Unless marked as a fixed technical limit, values shown are defaults — customize them in config/timetiles.yml (see Configuration).

Trust Levels

Each user is assigned a trust level that determines their quotas and rate limits. Admins set trust levels in /dashboard/collections/users.

LevelNameDescription
0UntrustedNew or unverified accounts
1BasicConservative limits
2RegularStandard operational limits
3TrustedEnhanced access, scraper access
4Power UserGenerous allowances
5UnlimitedMost quotas unlimited (admins)

Quotas

QuotaL0L1L2L3L4L5
File uploads/day131050200-
Events per import1001K10K50K200K-
Total events1005K50K500K2M-
Import jobs/day1520100500-
Max file size1 MB10 MB50 MB100 MB500 MB1 GB
Catalogs12520100-
Active schedules01520100-
URL fetches/day0520100500-
Scraper repos000310-
Scraper runs/day0001050-

- = unlimited. Scraper access requires trust level 3+.

Import Preview Limit

The import wizard’s file and URL previews have a fixed technical ceiling of 50 MB, because preview parsing loads the file into memory. The effective preview limit is the smaller of this ceiling and the user’s file-size quota. An unlimited quota does not remove the preview ceiling.

This is separate from the import quotas above: a higher file-size quota does not make the wizard accept previews larger than 50 MB. Per-user overrides and config/timetiles.yml do not raise this ceiling.

Custom Quotas

Override quotas per user in the admin panel at /dashboard/collections/users. Custom quotas take priority over trust level defaults.

Monitoring

  • Admin panel: /dashboard/collections/users (per-user usage)
  • API: GET /api/quotas (current user)
  • Response headers on quota-enforced operations

Rate Limiting

File Upload Rates

Trust LevelBurstHourlyDaily
Untrusted (0)1/min11
Basic (1)1/10s33
Regular (2)1/5s520
Trusted (3)2/5s2050
Power User (4)5/5s100200
Unlimited (5)10/s1000-

API General Rates

Trust LevelBurstHourly
Untrusted (0)1/s10
Basic (1)2/s30
Regular (2)5/s50
Trusted (3)10/s200
Power User (4)20/s1000
Unlimited (5)100/s10000

When rate limited, the response includes:

HTTP 429 Too Many Requests X-RateLimit-Limit: 10 X-RateLimit-Remaining: 0 X-RateLimit-Reset: 2025-10-06T15:30:00.000Z

HTTP Caching

URL fetch caching for scheduled imports (outgoing requests). Uses supported Cache-Control headers from external APIs. Configure in config/timetiles.yml:

cache: urlFetch: dir: /tmp/url-fetch-cache maxSizeBytes: 104857600 # 100 MB defaultTtlSeconds: 3600 # 1 hour maxTtlSeconds: 2592000 # 30 days respectCacheControl: true

Troubleshooting: For high cache misses, check origin cache headers before increasing TTL or size. For stale data, reduce TTL; for disk pressure, reduce maxSizeBytes.

If a manual reset is necessary, stop the processes using the cache, resolve cache.urlFetch.dir from the effective configuration, and verify that it is a dedicated cache directory. Move that exact directory aside before restarting; the cache is recreated on demand. Do not use an unset environment variable or wildcard to select a deletion target. The default /tmp location is temporary; use a dedicated persistent volume if cache data should survive container replacement.

Last updated on