Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

High-Level Features

ℹ️ This page is just a rough outline of what I want to cover.

This page will explain the high-level features of FOKS.

Key-Value Storage

  • user KV vs team KV
  • key namespace looks like unix path
    • first character must be /, 0+ "directories" separated by /, then a non-empty "file" name
    • foks kv ls output shows names within each "directory", but not whether each name is a file or directory
    • newly created accounts don't have a / key until at least one other key is created (or a git repo is created, which creates /, /app and /app/git if they don't already exist, so it can create /app/git/REPONAME)
  • individual values can be anything, any size
    • user account storage limits based on server policy
  • values are stored as rows in database
    • large values are split into 4 MiB chunks, so a large value will occupy multiple rows
    • can values be stored in other storage? → hasn't been built yet
    • storage ideas (mine, no idea if any of these will happen or not)
      • files on server's local disk (how to monitor usage and not run out of space)
      • S3 (or compatible) bucket blobs
      • azure, google, etc.
      • dropbox, box.com, etc.
  • deleted values still count against foks kv get-usage totals
    • janitor (aka "quota reclamation") hasn't been built yet

Git Repositories

  • stored in KV, using keys under /app/git/REPONAME
  • git-remote-foks - allows git to work with foks:// URLs
  • there is no foks git delete command, but foks kv rm -R /app/git/REPONAME deletes the repo

Generated 2025-09-22 03:40:19
74d4feb 2025-09-22 03:38:41 +0000