In Depth & Reference

The Data Folder & File Format

Contents

The data folder (also called a “vault” in the Markdown world) is the folder where TandemLoop stores all your data. It consists entirely of ordinary text files—Markdown with YAML frontmatter—and you choose its location when you set up the app—locally or in iCloud Drive. This makes it readable by other tools, by AI agents, and of course by you with any text editor.

Folder Structure

{data folder}/
  AGENTS.md                  ← Instructions for AI agents
  _inbox/                    ← Quickly captured tasks (GTD inbox)
  bereiche/                  ← Your areas (one subfolder each)
    {area}/
      area_{slug}.md         ← Area metadata
      _projects/             ← Projects in the area
      _singles/              ← Standalone tasks directly in the area
      _folders/              ← Optional folders
        {folder}/
          fld_{slug}.md      ← Folder metadata
          _projects/
          _singles/
  _config/                   ← Configuration (tags, attributes, themes, display, language)
    tags.yaml
    attributes/              ← Custom attributes (one file per attribute)
      {key}.yaml
    themes/                  ← Themes (one file per theme)
      {key}.yaml
    agent.yaml               ← Your AI agent’s last run (written by the agent)
    language.yaml            ← Data folder language
  _views/                    ← Saved views (also in subfolders)
    vw_{slug}.yaml
  _proposals/                ← Proposals from the AI
    prop_{slug}.md
  _archive/                  ← Archived entities (don’t edit manually)
  _conflicts/                ← Saved iCloud conflict copies
  _system/                   ← Schema and generated reference documents

Directories with a _ prefix are system folders and are managed by the app.

Entity IDs and File Name Prefixes

Every entity has a stable UUID-based ID in the id field of its frontmatter. The file name is independent of it and follows a readable slug. Only views, view folders (vf_…), and proposals carry their slug in the ID. Older files may still have slug IDs (for example, area_arbeit).

Entity Prefix Example ID Example file name
Task tsk_ tsk_f66f123ebac0402f… tsk_design-logo.md
Project prj_ prj_03ebb2b6286f4a9f… prj_website-relaunch.md
Area area_ area_4f8e2d1c0b9a4e… area_work.md
Folder fld_ fld_a1b2c3d4e5f647… fld_clients.md
Milestone ms_ ms_9fd12a6f440a4c… ms_sprint-1.md
Tag tag_ tag_a1b2c3d4e5f647… (in _config/tags.yaml)
View vw_ vw_signal-tasks vw_signal-tasks.yaml
Proposal prop_ prop_clean-up-inbox prop_clean-up-inbox.md
Attribute attr_ attr_3f2e9a0b4c5d… _config/attributes/client.yaml
Theme thm_ thm_7c1d0e9f2a4b… _config/themes/northern-lights.yaml

The Data Contract

The file format follows three principles:

Tolerant reading: The app reads files even when fields are missing, unknown status values are present, or legacy files come from earlier versions. This ensures that an entry edited by hand or created by an AI agent doesn’t block the entire app.

Stable writing: When updating a file, the app preserves the order of existing fields and existing information. Unknown fields added by an external editor are kept. The app appends fields added later, such as a reminder (remind_at), to the end of the frontmatter; empty fields are written as null, and only a few, such as remind_at and repeat:, are omitted entirely as long as they aren’t set.

Machine-readable: Because these are plain-text Markdown files, AI agents and other tools can read the data folder directly. Working with AI Agents describes which changes they may make directly.

Custom Attributes

Custom attributes (in Settings under Attributes) add extra fields to tasks, projects, and milestones. Each attribute is a small YAML file in _config/attributes/—the file name is the attribute’s key:

key: client
name: Client
type: select
applies_to:
  - task
  - project
options:
  - ACME
  - Contoso
description: The client the work is done for.

The values are stored in the frontmatter of each file under attributes::

attributes:
  client: ACME
  budget: 12000
  acceptance: '2026-11-30'
  • Types: text, number, date ('YYYY-MM-DD'), boolean (yes/no), select (one of the options), url (link).
  • Keys consist of lowercase letters, digits, and underscores and must not match a built-in field such as status or due_date. A key can’t be changed later.
  • Empty fields aren’t saved. Deleted attributes don’t remove values—they stay in the files and appear in the Inspector as a read-only row.
  • In views, attributes are available as fields attributes.key for filtering, sorting, and grouping.

AI agents can create attributes themselves: If you ask an agent, for example, “Create a Budget attribute for projects,” it writes a file to _config/attributes/. The app recognizes it immediately and shows the new field.

Recurring Tasks

The repeat rule is stored in the task’s frontmatter under repeat:, for example every Monday:

repeat:
  unit: week
  days: [mon]

unit is day, weekday, week, month, or year; optionally add every (interval), day or nth + weekday (monthly rules), from: completion (after completion), and until or count as the end. The app maintains the keys series, occurrence, and next itself. The complete reference for agents is in _system/docs/data-model.md.

Themes

Each theme is a YAML file under _config/themes/—the file name without extension is its key (northern-lights.yaml → northern-lights). A theme lists only the colors that differ from the default:

name: Northern Lights
description: Cool teal with dark surfaces.
appearance: system        # system, light, or dark
font_design: rounded      # default, rounded, serif, or monospaced
colors:
  primary:
    light: "#0F766E"
    dark: "#2DD4BF"
  danger: "#E5484D"       # one value applies to light and dark

Colors are written as hex values in quotation marks, with opacity as #RRGGBBAA. Which color keys exist, which are derived from others, and which defaults apply is documented in _system/docs/themes.md—TandemLoop maintains this reference itself so AI agents can design matching themes. Each device stores which theme is active on its own; the theme files themselves sync with the data folder.

The Relations Block

Every task, project, milestone, and folder file—except Inbox tasks—contains a short machine-readable section at the end of the file body that stores the parent links as relative Markdown links—here for a task in the project “Website Relaunch”:

<!-- tandemloop:relations:start -->
[Area: Work](../../../area_work.md) · [Project: Website Relaunch](../prj_website-relaunch.md)
<!-- tandemloop:relations:end -->

The app keeps this block up to date automatically, so you don’t need to edit it by hand; AI agents leave it out of new files and remove it when moving files. It makes the hierarchy traceable for tools and agents even without the app’s in-memory index.

Data Folder Language

The few texts TandemLoop writes into files itself—the labels in the relations block (Bereich: / Area: …), the headings in a task’s log (## Du — 21.3.2026 / ## You — 2026-03-21), the sections of a proposal (## Diskussion / ## Discussion), and the instructions for AI agents (AGENTS.md, _system/docs/)—follow the data folder’s language. It’s stored in _config/language.yaml:

language: en

New data folders are English; data folders without this file (from earlier versions) stay German. The data folder’s language doesn’t depend on the device language—so all devices write the same files. When reading, TandemLoop recognizes both variants.

Edit directly in the data folder—with care. You can open files with any text editor. Keep in mind: IDs must never be changed; date values in the frontmatter of Markdown files are in single quotation marks ('2026-03-14T09:30:00'), in view and configuration files (_views/, _config/) without quotation marks; the _archive/ folder shouldn’t be edited manually. For structural changes (moving projects, renaming tags), it’s better to use the app or the proposal mechanism—otherwise the internal index can become inconsistent.

Multiple Devices: Syncing Through iCloud Drive

TandemLoop has no server of its own and doesn’t send any data to the internet on its own. Because your data folder is an ordinary folder, you use it on multiple devices by putting it in iCloud Drive. iCloud keeps the files up to date between Mac, iPad, and iPhone; TandemLoop reads the same folder on each device and downloads missing files from iCloud as needed.

Settings › Data Folder › Switch Data Folder… › choose a directory in iCloud Drive

Don’t write on two devices at the same time. Cloud services sync at the file level and don’t know the internal structure of your data folder. So edit your data on only one device at a time whenever possible, and wait until syncing is complete before you use the next device—otherwise conflict copies of individual files can appear. The same applies when an AI tool accesses the same data folder in the cloud at the same time.

Syncing isn’t a backup. Cloud syncing mirrors deletions to all devices too. For real backups, also use Time Machine, for example, or your cloud service’s version history.