Samaya
Pre-beta. Samaya is early software: expect rough edges and changes between releases. Keep a backup of your Org files.

Org files

Samaya keeps everything in a folder of Org files that you own. Other tools, Emacs included, can read and edit them, and Samaya picks up their changes within a moment.

Choosing the folder

Choose it in Settings → Org files. Calendar sync writes into the same folder.

With no folder set, Samaya shows an empty planner and makes no changes.

Layout

org/
├── Inbox.org         where new tasks go
├── work.org          a channel: its tasks
├── website.org       a channel nested under work
├── calendar.org      generated by calendar sync
├── data/             images attached to tasks, as org-attach keeps them
├── goals/
│   ├── 2026.org      the year's goals
│   └── archive/
│       └── 2025.org  archived goals
└── archive/
    ├── 2025.org      archived tasks, still shown
    ├── trashed.org   deleted tasks, for 14 days
    └── calendar.org  generated: notes from past calendar events
  • Every top-level .org file is a channel, named after the file. New tasks go to Inbox.org, created when needed.

  • Files under archive/ are read, but don't create channels. Being in a subfolder, they stay out of an org-agenda-files pointed at the folder.

  • No channel can be named trashed or calendar.

  • calendar.org and archive/calendar.org belong to calendar sync. See Google Calendar → The calendar file.

Channel keywords

Settings → Channels adds, renames, nests, recolours and archives channels. It writes these keywords at the top of the channel's file:

#+SAMAYA_TONE: sky
#+SAMAYA_PARENT: work
#+SAMAYA_ARCHIVED: t
#+SAMAYA_CONTEXT: work
#+SAMAYA_PUBLIC: t
KeywordMeaning
#+SAMAYA_TONE:Colour: clay, sage, sky, ochre or a hex colour
#+SAMAYA_PARENT:Nests the channel under another top-level channel. One level deep; not under the Inbox
#+SAMAYA_ARCHIVED:Hides the channel, its children and their tasks until unarchived
#+SAMAYA_CONTEXT:work puts a top-level channel and its children in the Work context; otherwise it is Personal
#+SAMAYA_PUBLIC:Lets a Work channel's task names show in your Teams status. Every other channel is private

Renaming a channel renames its file.

Tasks

#+TITLE: Work
#+SAMAYA_TONE: sky
#+TODO: TODO NEXT WAIT | DONE CANCELLED

* TODO [#A] Review the timeline widget
SCHEDULED: <2026-09-28 Mon 10:30-11:00>
:PROPERTIES:
:ID: 5f0c...
:EFFORT: 0:30
:END:
:LOGBOOK:
CLOCK: [2026-09-27 Sun 09:00]--[2026-09-27 Sun 09:25] =>  0:25
:END:
Notes about the review go here, as the headline's body.
** TODO Check the drag ghost
In SamayaIn Org
TaskA headline whose keyword is in the file's first #+TODO: line (TODO and DONE by default)
DoneA done keyword. Undoing it restores the keyword it had before
Day and time blockSCHEDULED:. A task without one sits in the backlog
Estimate:EFFORT: as H:MM
Priority[#A] urgent, [#B] priority, none for normal, [#C] low
Time spentCLOCK: lines in :LOGBOOK:, one per stretch of Focus
NotesThe headline's body, without its drawers
Images[[attachment:name]] links in the notes; see Images
SubtasksTask headlines beneath it
Where it came from:SAMAYA_SOURCE_INTEGRATION:, _ITEM: and _REFERENCE: properties, for planned issues

A headline without a keyword is a plain heading: it is kept, but not shown as a task. Samaya gives a headline an :ID: the first time it edits it.

Deleting

Deleting a task moves it, with its subtasks and notes, to the end of archive/trashed.org, stamped with when and where from:

* TODO Check the drag ghost
:PROPERTIES:
:ID: 9a41...
:TRASHED: [2026-09-28 Mon 14:05]
:TRASHED_FROM: work
:TRASHED_PARENT: 5f0c...
:END:

:TRASHED_PARENT: appears only on a subtask deleted on its own. The file is tagged :ARCHIVE:, so org-agenda leaves it out.

Settings → Trash lists deleted tasks.

  • Restore puts a task back under its parent if that still exists, else at the end of its channel, else in the Inbox, without the :TRASHED...: lines.

  • Delete forever removes it, with its attached images.

  • Anything in the trash for 14 days is deleted forever.

Goals

Each year's goals live in goals/<year>.org. Samaya creates the file with the year's first goal. Being in a subfolder, goal files stay out of an org-agenda-files pointed at the Org folder.

#+TITLE: Goals 2026
#+TODO: ACTIVE | DONE ENDED

* ACTIVE Read 24 books
:PROPERTIES:
:ID: 3b1c...
:SAMAYA_COLOR: #63b376
:SAMAYA_CHANNEL: personal
:SAMAYA_MEASURE: Books read
:SAMAYA_MEASURE_START: 0
:SAMAYA_MEASURE_TARGET: 24
:SAMAYA_MEASURE_BY: <2026-12-31 Thu>
:END:
:MEASURE:
- 9 [2026-06-30 Tue]
- 14 [2026-09-30 Wed] Two on holiday
:END:
Why it matters goes here.
** ACTIVE Finish the reading list
:PROPERTIES:
:ID: a71f...
:SAMAYA_QUARTER: Q4
:SAMAYA_FEATURES: steps habits time
:SAMAYA_TIME_BUDGET: 3:30
:END:
*** Read for 30 minutes
:PROPERTIES:
:ID: c4d9...
:SAMAYA_HABIT_DAYS: Mon Wed Fri Sun
:END:
In SamayaIn Org
Year goalA top-level headline with a keyword. Its body is why it matters
Quarter goalA keyword headline directly beneath a year goal, with :SAMAYA_QUARTER: Q1 to Q4
HabitA headline without a keyword directly beneath a quarter goal, with :SAMAYA_HABIT_DAYS:
StatusACTIVE, DONE or ENDED; closing writes CLOSED:
Colour, channel:SAMAYA_COLOR: and :SAMAYA_CHANNEL: on the year goal
Features:SAMAYA_FEATURES:, any of steps habits time
Time budget:SAMAYA_TIME_BUDGET:, H:MM a week
Measure:SAMAYA_MEASURE...: properties and a :MEASURE: drawer on the year goal
StepA task in a channel file whose :SAMAYA_GOAL: is the quarter goal's :ID:

Other headlines in a goal file, such as notes, are kept but not shown. Closing a year goal closes its active quarter goals too.

Measures

A year goal can track one measure: a name, a start, a target and, optionally, a date to reach it by. Values are numbers or H:MM:SS. A target below the start means lower is better. Each logged value is a line in the :MEASURE: drawer, with its date and an optional note.

Habits

A quarter goal with habits among its features puts a task on each of its habits' days left this week, in the year goal's channel or the Inbox. Moving the task keeps it counting for its day. Skipping a day leaves it out of the week; a past day whose task is not done is missed.

Archiving and deleting

Archiving a goal moves it, with what is beneath it, to goals/archive/<year>.org. Unarchiving puts it back beneath its year goal.

Deleting a goal moves it to archive/trashed.org, like a task. Restoring puts it back in its year's file, and it is deleted forever after 14 days. Tasks linked to a deleted goal keep their link, so restoring the goal reconnects them.

Images

In the task editor, + Image attaches an image, and Ctrl+V attaches the one on the clipboard. Samaya stores them where org-attach does, so C-c C-a in Emacs sees them: a task with the ID 5f0c... keeps its images in data/5f/0c.../. The first image tags the headline :ATTACH:, and each is linked on its own line at the end of the notes:

* TODO Review the timeline widget :ATTACH:
Notes about the review go here.
[[attachment:screenshot.png]]

The editor shows a thumbnail for each link. Click one to open it; ‹ › or the arrow keys step through the rest, and ✕ or Esc closes it. A thumbnail's ✕ deletes the file and its link. Deleting a link by hand only hides the thumbnail; the file stays.

What Samaya changes

Samaya edits only what a change touches and leaves the rest of the file as it was: tags, deadlines, repeaters, other keywords such as WAIT, and properties and drawers it doesn't know. It never overwrites an edit made since it read the file.