Docs

Temper gives your work a throughline — the connective thread across sessions, decisions, and evolving understanding. Everything resolves to markdown.

Install

macOS (Apple Silicon) and Linux (x86_64):

curl -fsSL https://raw.githubusercontent.com/tasker-systems/temper/main/scripts/install/install.sh | sh

Windows (x86_64, PowerShell):

irm https://raw.githubusercontent.com/tasker-systems/temper/main/scripts/install/install.ps1 | iex

Windows support is experimental in the 0.1.x line — file issues at github.com/tasker-systems/temper/issues if you hit problems.

To pin a version, pass --version vX.Y.Z to the install script. See docs/guides/install.md for uninstall instructions and Linux arm64 / Intel Mac notes.

Build from source

If you'd rather compile locally (Intel Mac, Linux arm64, or just to hack on temper itself):

git clone https://github.com/tasker-systems/temper.git
cd temper
cargo install --path crates/temper-cli --features embed,extract,hnsw

The embed feature pulls in ONNX Runtime for local embeddings; extract enables document ingestion via kreuzberg; hnsw enables the local vector index. Drop any you don't need.

Getting started

A vault is a directory of markdown files with YAML frontmatter. Temper resolves its config from ~/.config/temper/config.toml or a per-project .temper/config.toml.

temper initInitialise a new vault — asks how you work, writes config.
temper context add <name>Subscribe to a context (project). Contexts keep resources scoped.
temper add <path> --context <ctx>Import a file, URL, or directory into the vault. Extracts markdown and adds frontmatter.
temper add <path> --dir --context <ctx>Import every file in a directory.
temper warmup --context <ctx>Session primer — recent work, open tasks, recent decisions. Pipe into an agent's first prompt.
temper statusVault overview: contexts, resource counts, recent activity.
temper checkVerify vault integrity and tool health.
temper doctorValidate frontmatter across the vault; repair drift.
temper eventsShow recent vault events.

Resources

Every piece of knowledge in temper is a resource — a markdown file with typed frontmatter. Six doc types cover the vocabulary of structured work:

goalOutcome — what we're building.
researchSurvey of alternatives, constraints, prior art.
decisionWhat we chose, and why.
taskUnit of work — what comes next.
sessionWhat happened — record of a working session.
conceptShared vocabulary within the vault.

Create · list · show · update

temper resource create --type <t> --title <title>Create a new resource of any type.
temper resource listList all resources across types and contexts.
temper resource list --type taskFilter by type (goals show task stage counts).
temper resource show <id>Show a resource. Accepts slug, slug suffix, or task sequence number.
temper resource update <id> --title <t>Update the title.
temper resource update <id> --context-to <ctx>Move the resource to a different context.
temper resource update <id> --stage <s>Task stage: backlog, in-progress, done, cancelled.
temper resource update <id> --mode <m>Task mode: plan, build.
temper resource update <id> --effort <e>Task effort: small, medium, large.
temper resource update <id> --relates-to <slug>Add a relationship. Repeatable. Similar flags: --references, --depends-on, --extends, --preceded-by, --derived-from.
temper resource update <id> --branch <name> --pr <url>Task-specific metadata: attach a git branch or PR URL.

Search

temper search combines full-text and semantic search with optional graph expansion — seeds spread along typed edges to surface neighbors.

temper search <query>Hybrid search across the vault.
--context <ctx>Scope to one context.
--doc-type <type>Filter by doc type.
--limit <n>Cap results (default 10).
--text-onlySkip semantic search (no local embedding needed).
--seed <id>Explicit seed resource for graph expansion. Repeatable.
--depth <n>Max hops for graph traversal (default 2, max 10).
--no-graphDisable graph expansion.

Knowledge graph

Resources aren't isolated — frontmatter references (relates_to, depends_on, etc.) form a graph. Two commands populate it:

temper graph buildScan markdown bodies for references and seed the frontmatter relationships. Additive — doesn't overwrite existing edges.
temper graph build --dry-runPreview edges without writing.
temper graph indexDiscover concepts via LLM judgment over the local HNSW index. Requires temper index to have been run first.
temper indexBuild the HNSW vector index over the vault. Needed for semantic search and the graph concept-discovery pass.
temper index --fullForce a full rebuild.

Cloud sync

Temper Cloud is a Postgres-native source of truth for your vault with pgvector-powered semantic search. Your local markdown files remain canonical — the cloud is a searchable, syncable lens on them.

Auth

temper auth loginBrowser-based OAuth with PKCE. Caches the token locally.
temper auth statusShow current auth state.
temper auth logoutClear cached credentials.
temper auth tokenStore a JWT directly (for API-only clients or manual auth).

Sync

Sync uses a manifest-based three-way compare between your local file, a manifest record, and the server. Non-conflicting changes auto-merge at the paragraph level; genuine conflicts are written to .conflict.md for human resolution.

temper sync runRun a full sync cycle — push local changes, pull remote ones.
temper sync run --context <ctx>Sync only one or more contexts.
temper sync statusShow what would change, without making changes.
temper sync refreshRefresh manifest from server — non-destructive interleave.
temper sync resetReset manifest from scratch (backs up first, then full rebuild).
temper pull <resource-id>Pull a single resource by UUID.
temper resource delete <slug> --type <doctype> [--force]Delete a resource: cloud-first soft-delete, then local cleanup tail in local mode.

Teams

temper team joinRequest to join a team — defaults to system access.
temper team statusCheck request or membership status.
temper team leaveWithdraw a pending request or leave a team.

Agents

Temper is built to be legible to AI coding agents. Two integration paths — a Claude Code skill file, or the remote MCP server.

Claude Code skill

A skill file teaches an agent your vault's structure, doc types, and workflow vocabulary. Temper generates one tailored to your vault:

temper skill install
temper skill installInstall skill directory and command wrapper.
temper skill generatePreview the skill content to stdout without installing.
temper skill checkReport installation status.

To automatically prime new Claude Code sessions with recent context, add a SessionStart hook:

{
  "hooks": {
    "SessionStart": [{
      "hooks": [{
        "type": "command",
        "command": "temper warmup --context myapp"
      }]
    }]
  }
}

MCP server

The remote MCP server exposes vault operations as structured tools over Streamable HTTP. Agents authenticate via Auth0 using the OAuth 2.1 + PKCE flow. Connect Claude Desktop or Claude Code:

{
  "mcpServers": {
    "temper": {
      "url": "https://temperkb.io/mcp"
    }
  }
}

The client handles OAuth automatically — you'll be prompted to log in on first connection.

Available tools

list_resourcesList resources, filtered by context and/or doc type. Most recent first.
get_resourceGet a resource by ID or slug, optionally with full markdown content.
create_resourceCreate a resource with optional markdown content. Name-based context and doc type.
update_resourceUpdate a resource's title, slug, or content. New content triggers re-indexing.
delete_resourceSoft-delete a resource by ID.
searchFull-text and semantic search across the knowledge base.
list_contextsList available contexts (workspaces).
get_contextGet details of a specific context.
create_contextCreate a new context (workspace).
list_doc_typesList available document types.
list_eventsList events, optionally filtered by resource or type.
get_profileGet the authenticated user's profile.

Config

Global config lives at ~/.config/temper/config.toml. A per-project .temper/config.toml overrides it when temper is run from that directory.

temper config editOpen config.toml in $EDITOR — validate-then-save semantics.
TEMPER_VAULT=<path>Env var override for the vault path. Also accepted as --vault <path> on any command.
← Back to home