Tidigar share link specification

See sharing a roadmap as a link, with the Share link dialog and the steps to copy a link.

Status: public pre-release specification, version 1. It defines how any tool, script or AI agent writes a link that opens a complete, editable Tidigar roadmap. The link carries the whole roadmap itself, so nothing is uploaded, nothing is stored on a server and no account is needed. A link is plain text, written one record at a time; it needs no code, compression or encoding.

License: published by Hamacher Software AB under CC BY 4.0. Anyone may implement the format it describes, in any software, without asking.

The keywords MUST, MUST NOT, SHOULD and MAY are normative. The roadmap model, its field rules and limits are defined in the Tidigar Roadmap Interoperability Specification.

https://open.tidigar.com/s#t=1~<record>~<record>~…~!

It opens the Tidigar web app with the roadmap, or the Tidigar app when it is installed and claims the link. The opener is not deployed yet; until it is, https://app.tidigar.com/#t=1~… opens the same roadmap in the web app.

Records

RecordHolds
n=Namethe roadmap's name, required
d=Textits description
y=2026its year, required: the year of every MM-DD date
wplans in work days: Monday to Friday, without vacations
r=KEYthe reference key prefix, up to 10 capital letters and digits
m1=Team:Design,Builda dimension and its options, in order
a1=title/start/days/…an activity
s1=title/date/…a milestone
p1=title/start/daysa period
v=timeline/…the view the roadmap opens in
c=3.1.1the number of activities, milestones and periods

Numbered records count from 1: a1, a2, … A link MUST NOT skip a number, and c= MUST give the counts, so a missing record or a cut link is noticed.

Activities

a3=Install_new_unit/11-02/5/Installer,Install/@a2,s2/50p/d=Ask_for_permits

Milestones and periods

s1=Heat_pump_in_operation/11-09/@a3
s2=Contract_signed/10-30/fixed
p1=Autumn_break/10-26/5

Dimensions and the view

Text

Example

https://open.tidigar.com/s#t=1~n=Heat_pump_replacement~y=2026~w~m1=Team:Household,Installer~m2=Phase:Plan,Install~a1=Review_current_system/10-12/3/Household,Plan~a2=Request_quotes/10-15/6/Household,Plan/@a1~a3=Install_new_unit/11-02/5/Installer,Install/@a2,s2~s1=Heat_pump_in_operation/11-09/@a3~s2=Contract_signed/10-30/fixed~p1=Autumn_break/10-26/5~v=timeline/color:Team/group:Phase~c=3.2.1~!

A heat pump replacement planned in work days: three activities by Team and Phase, the installation waiting both for the quotes and for the signed contract, a completion milestone, and the autumn break as a vacation week. It opens as a timeline grouped by Phase and colored by Team.

Tidigar adds the opened roadmap to the recipient's own library and shows it in the link's view. Every record gets a new identity, so each opening is an independent copy: editing it never changes the link or anyone else's copy. Opening the same link again on a device selects the copy it made.

The copy is made as a new roadmap is: its activities and milestones get reference keys in the link's order, such as WL-1, WL-2, under the prefix r= gives or one made from the roadmap's name, and it gets the Classic view beside the view it opens in.

Tidigar reads a link leniently and says what it did. What has an obvious fix is fixed and reported by record, for example a3: no dimension has the option "Done"; it was left empty, or an activity that starts before what it depends on is moved later. A link with a problem that has no fix, such as a1: start "02-30" is not a date, is refused with every problem listed. Tidigar shows the report so it can be passed back to whoever wrote the link. Tidigar never drops an activity, a milestone or a period.

Tidigar shares links of its own in a compressed form, #s=1.…. They are not meant to be read or written by hand; open them in Tidigar.

Optional validation

Agents can write links directly using llms.txt, without tools or code. To check a finished link locally, optionally run:

node tidigar-link.mjs --validate "<finished URL>"

The module below reports the plan's dates and dependencies, record counts, fragment length and any corrections Tidigar would make. It exits 0 only when the link opens without corrections. Invalid input, a fragment over 1,900 characters or corrections to review produce exit 1. It does not rewrite the link or save anything; fix the original records and validate again if desired.

https://tidigar.com/agents/v1/tidigar-link.mjs (Node.js 20 or later, Deno or Bun) and https://tidigar.com/agents/v1/tidigar_link.py (Python 3.8 or later) build a link from a plan: the roadmap as JSON with real dates and names, described by https://tidigar.com/agents/schema/plan-v1.json. They validate it with Tidigar's own rules, print the link, a summary with real dates and the fragment length, or an error that names the broken rule and the record, such as activities[2] "Build". --read <link> prints a link's roadmap as a plan to change and build again. They run locally and send nothing anywhere. As a module, tidigar-link.mjs exports createLink(plan), readLink(link) and embedCode(link, title).

Instructions for AI agents, with these builders and a worked example, are at tidigar.com/llms.txt.