Getting Started
Everything you need to start tracking, organizing, and managing your work with Th1ngs.
What is Th1ngs?
Th1ngs is a flexible item and task management platform. Think of it as a programmable tracker: you define what you want to track, how it's organized, and the lifecycle each item goes through — no coding required.
Quick Setup
- 1Create an account
Sign up with your email or Google account. After a short review your account is activated.
- 2Create your first Box
Click New Box, pick a box type (Tasks, Agile, Places …) and give it a short key like
PROJ. - 3Add Things
Inside the box, click New Thing. Fill in the summary, custom fields, and set a workflow state.
- 4Invite collaborators
In Box Settings → People, grant access to teammates by role: Viewer, Editor, or Admin.
- 5Configure your workflow
Define the states Things move through and which transitions are allowed.
Core Concepts
The hierarchy and data model behind Th1ngs.
The Three-Level Hierarchy
Anatomy of a Thing
A Thing is the primary entity. It carries:
- Key — unique ID like
PROJ-42, auto-generated from the box key. - Summary — one-line title.
- Description — rich-text body (often populated from email).
- Status — current workflow state (Open, In Progress, Done, …).
- Custom Fields — typed fields defined by the box schema.
- Comments — threaded discussion.
- Attachments — versioned files stored per Thing.
- Relations — links to other Things.
- History — full audit log of every change.
Box Types
Each Box is created from a Box Type — a schema template that pre-configures the custom fields, default workflow, and view layout.
Built-in types include: Tasks, Agile / Software, Project Management, Places, Photo, and Guide.
Permissions
| Role | Capabilities |
|---|---|
| Viewer | Read Things, comments, attachments |
| Editor | Create & edit Things, comments, attachments, advance workflows |
| Admin | Full access + box configuration, people management |
| Super-Admin | Cross-site access, system administration |
Boxes
Boxes are the containers that group your Things. Each has its own schema, workflow, and access controls.
Creating a Box
Go to Boxes → New Box and choose:
- Name — displayed everywhere.
- Key — short prefix like
PROJ. Used in Thing keys (PROJ-1). - Type — the schema template to start from.
- Visibility — public (anyone) or private (invited users only).
PROJ-42 are derived from them.Box Settings
| Section | What you configure |
|---|---|
| General | Name, description, visibility, box type |
| Custom Fields | Add, edit, reorder, and mark required fields |
| Workflow | States, transitions, conditions and validators |
| People | Grant or revoke user roles (Viewer / Editor / Admin) |
| Connect an IMAP mailbox to receive Things by email |
Built-in Box Types
- Tasks — Generic tracker with priority and assignee.
- Agile / Software — Sprints, story points, releases.
- Project Management — Phases, milestones, owners.
- Places — Items with geographic coordinates.
- Photo — Image-centric items with gallery view.
- Guide — Documentation-style knowledge base entries.
Things
Things are the primary objects — tasks, tickets, assets, entries, or anything else you want to track.
Creating a Thing
Click + New in the navbar or from inside a Box. Provide:
- Summary (required) — one-line title.
- Description — body text, often pre-filled from an incoming email.
- Custom Fields — any fields defined by the box schema.
- Status — the starting workflow state.
The Thing Detail Page
From the detail page you can:
- Edit any field inline and save immediately.
- Advance the workflow state via transition buttons.
- Add, read and delete comments.
- Upload files — versioned automatically as
report.pdf,report-2.pdf, … - Create and remove relations to other Things.
- Browse the full change history.
Thing Keys
Every Thing gets a permanent key like PROJ-42. Keys are unique site-wide, human-readable, and searchable. Use them in comments or external tools to reference a specific Thing.
Relations
Link two Things together with a relation type and an optional comment. Relations are bidirectional — both Things show the link. Delete a relation from either side.
Attachments
Files are stored under {boxKey}/{thingId}/ with automatic versioning. Download or delete individual file versions from the Thing page.
Custom Fields
Attach typed metadata to every Thing in a Box. Design the schema that fits your workflow exactly.
Field Types
| Type | Use case |
|---|---|
| Text | Short labels, names, identifiers (up to 2000 chars) |
| Long Text | Descriptions, notes, rich content (unlimited) |
| Number | Story points, quantities, scores |
| Date / DateTime | Due dates, milestones, timestamps |
| Money | Monetary amounts with currency (e.g. USD, EUR) |
| Effort | Time estimates in hours/days |
| Select | Controlled vocabulary (Priority, Category, …) |
| Multi-Select | Tags, labels, multiple categories |
| Select-Suggest | Dynamic autocomplete backed by a provider (e.g. Countries) |
| Radio | Single-choice radio buttons |
| User | Assignee, reviewer, owner (references a user account) |
| Email address with mailto link | |
| Earth Point | Geographic coordinates (latitude/longitude) |
Managing Fields
Open Box Settings → Custom Fields. From there:
- Add a field — choose its name and type.
- Mark a field as required to block saving if empty.
- Reorder fields — the order determines form and list layout.
- For Select fields, manage the list of allowed option values.
Select-Suggest Providers
Fields of type select-suggest support dynamic option providers. A developer can implement the SelectSuggestProvider interface to fetch options from any external source (e.g. a REST API, a database).
public interface SelectSuggestProvider {
String getKey();
List<String> suggest(String query);
}
Register your provider as a Spring bean — it will be auto-discovered and available in the admin field configuration.
Built-in providers: countries — fetches country names from a public REST API with a built-in static fallback.
Workflows
Workflows are YAML-defined state machines that guide Things through a structured lifecycle.
How Workflows Work
A workflow defines:
- States — stages a Thing can be in (Open, In Progress, Done …).
- Transitions — allowed moves between states.
- Conditions — rules that must pass before a transition is allowed.
- Validators — checks at transition time (e.g. a required field must be set).
- Post-functions — actions run automatically after a transition succeeds.
Example Workflow YAML
name: Simple Task Workflow initial_state: open states: - id: open label: Open color: "#6366f1" - id: in_progress label: In Progress color: "#f59e0b" - id: done label: Done color: "#22c55e" transitions: - from: open to: in_progress label: Start Work - from: in_progress to: done label: Mark Complete
Assigning a Workflow to a Box
In Box Settings → Workflow, select the workflow schema to use. Changing the workflow doesn't reset existing Thing states — they keep their current state and follow the new transitions going forward.
Agile Boards
Boxes of type Agile / Software render workflow states as swim-lane columns. Drag Things between columns to trigger transitions. Releases (milestones) can be created and Things assigned to them for sprint-style planning.
Email Integration
Connect an IMAP mailbox to a Box and create Things — and add comments — entirely by email.
How It Works
Th1ngs polls the configured inbox on a schedule. For each unread message:
- New thread — creates a new Thing. Subject becomes the summary; email body becomes the description.
- Reply to existing thread — adds a comment to the existing Thing. Quoted previous messages are stripped automatically.
- Attachments — saved directly to the Thing.
Connecting a Mailbox
Go to Box Settings → Email → Connect IMAP Mailbox.
| Field | Description |
|---|---|
| Email / Username | The mailbox login (usually the full email address) |
| Password | Mailbox password or app-specific password |
| Server (Host) | IMAP hostname — e.g. imap.gmail.com |
| Port | 993 for IMAPS (TLS) · 143 for plain IMAP |
| Protocol | imaps (recommended) or imap |
| Folder | Folder to monitor — default INBOX |
Thread Tracking
Th1ngs tracks email threads using the RFC 2822 Message-ID, In-Reply-To, and References headers. When a Thing is created from an email, its Message-ID is stored. Any future reply — including reply-to-reply chains — will add a comment to the same Thing rather than creating a new one.
Quote Stripping
When a reply becomes a comment, Th1ngs strips the quoted previous messages automatically. It handles:
>-prefixed quoted lines in plain-text emails.- Multi-line "On [date] … wrote:" separators (Gmail, Outlook, Apple Mail).
- HTML emails: removes
<blockquote>, Gmail quotedivs, Yahoo quoted sections, Outlook reply containers, and everything after<hr>dividers.
REST API
Programmatic access to Th1ngs via a JSON REST API. Authenticate with JWT or Personal Access Tokens.
Authentication
- JWT — POST credentials to
/rest/api/1/auth/login, then pass the token asAuthorization: Bearer <token>. - Personal Access Tokens — generate in your profile settings; same bearer format.
- Google OAuth2 — for browser-based flows.
Base URL
https://th1ngs.com/rest/api/1/
Key Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /boxes | List accessible boxes |
| GET | /boxes/{id}/things | List Things in a box |
| GET | /things/{key} | Get a Thing by key |
| POST | /boxes/{id}/things | Create a new Thing |
| PUT | /things/{key} | Update a Thing |
| DEL | /things/{key} | Delete a Thing |
| POST | /things/{key}/comments | Add a comment |
| GET | /things/recent | Recently viewed Things |
Example
# List Things in box 42 curl -X GET \ https://th1ngs.com/rest/api/1/boxes/42/things \ -H 'Authorization: Bearer <token>' \ -H 'Accept: application/json'
/api-docs.html on your Th1ngs instance.AI / MCP Integration
Th1ngs includes a built-in MCP server — connect Claude, ChatGPT, or any MCP-compatible AI to search and manage your Things.
What is MCP?
The Model Context Protocol is an open standard that lets LLM-based tools connect to external data sources. Th1ngs acts as an MCP server; your AI assistant is the client.
Connecting an AI Assistant
In your AI tool's MCP configuration, point it to:
url: https://th1ngs.com/mcp/sse type: sse
No authentication is needed for public boxes. For private boxes, pass a Personal Access Token as a bearer header (depending on your AI client's configuration).
Available Tools
| Tool | Description |
|---|---|
list_boxes | List accessible boxes with metadata and thing types |
search_things | Full-text search across accessible Things |
get_thing | Fetch full detail of a single Thing by key |
create_thing | Create a new Thing in a specified box (requires auth) |
Privacy & Access Control
The MCP server enforces the same access controls as the web UI. Unauthenticated callers can only see public boxes. Private boxes require a valid user token — the same one you'd use for the REST API.
search_things automatically and return results in context.