---
title: Context Runtime
description: "Hosted MCP server for facilitating access to personal <> industry context."
image: https://media.fjpaz.net/projects/context-runtime/cli-tour-light.poster.54e38f3a.webp
canonical: https://fjpaz.net/projects/context-runtime/
markdown: https://fjpaz.net/projects/context-runtime.md
year: 2024–26
tags:
  - context
  - LLMs
urls:
  - https://github.com/jmpaz/contextualize
  - https://github.com/jmpaz/cx-plugins
---

# Context Runtime

Hosted MCP server for facilitating access to personal <> industry context.

Year: 2024–26 · Site: [github.com/jmpaz/contextualize](https://github.com/jmpaz/contextualize) · Site: [github.com/jmpaz/cx-plugins](https://github.com/jmpaz/cx-plugins) · Tags: context, LLMs

### [two-years-pair](https://fjpaz.net/projects/context-runtime/two-years-pair/) · pair, side by side

#### [friction](https://fjpaz.net/projects/context-runtime/friction/) · voice excerpt (left)

Getting stuff done is a function of how little friction I have between having the problem that needs to be solved articulated in my head and expressing that articulation to the model, with the necessary context, for it to start working on the problem. That's what work means. … I want to reduce friction quite a lot for that process, for myself and for others.

voice note, recorded Mar 15, 2024, 6:58 AM, from 3:36 (edited)

#### [two-years](https://fjpaz.net/projects/context-runtime/two-years/) · chat excerpt (right)

[10:20 AM] Josh: I’ll have been working steadily on this for two years next weekend
[10:25 AM] Josh: it was at first my tool to facilitate Cursor-esque interactions in the terminal

  which I needed because I didn’t like cursor and so just did a lot of copypasting back and forth between simple text editor & chatgpt [image] (edited)
[10:26 AM] Josh: and then it evolved as I used it more → the meta shifted

iMessage, Mar 5, 2026

## [Terminal](https://fjpaz.net/projects/context-runtime/terminal/) *[placeholder]*

[contextualize](https://github.com/jmpaz/contextualize) delivers strings for git/filesystem refs + [external sources](https://github.com/jmpaz/cx-plugins) to clipboard /+ stdout.

### [cli-tour-clip](https://fjpaz.net/projects/context-runtime/cli-tour-clip/) · video

![contextualize in a terminal, reading public source from GitHub and an Are.na channel, paging through a file in less and copying a function to the clipboard](https://media.fjpaz.net/projects/context-runtime/cli-tour-light.poster.54e38f3a.webp)

Video: [cli-tour-light.e1f10545.webm](https://media.fjpaz.net/projects/context-runtime/cli-tour-light.e1f10545.webm) · 2218×1056

### [cli-stills](https://fjpaz.net/projects/context-runtime/cli-stills/) · pair, side by side

#### [cli-channel](https://fjpaz.net/projects/context-runtime/cli-channel/) · image (left)

![A token outline of a public Are.na channel](https://media.fjpaz.net/projects/context-runtime/cli-channel-light.9f0e388b.webp)

#### [cli-search](https://fjpaz.net/projects/context-runtime/cli-search/) · image (right)

![A wrapped source file open in less, on a search match](https://media.fjpaz.net/projects/context-runtime/cli-search-light.dbb56957.webp)

### [named](https://fjpaz.net/projects/context-runtime/named/) · chat excerpt

[4:05 AM] Josh: [`contextualize`](https://github.com/jmpaz/contextualize) was originally named for the act of fetching context for pasting into context (edited)
[4:05 AM] Josh: which yeah is now handled largely by the model
[4:06 AM] Josh: so the contextualize library/CLI facilitates that now, by preparing (fetching/formatting) context for that purpose

iMessage, Mar 10, 2026

```console
$ contextualize map src/contextualize/\
references/address.py

src/contextualize/references/address.py:
⋮
│_CLOCK_TIME_RE = re.compile(
│    r"^(?:(?P<hours>\d{1,2}):(?P<h_minutes>[0-5]\d)|"
│    r"(?P<minutes>(?:\d{1,2}|[1-9]\d{2,})))"
│    r":(?P<seconds>[0-5]\d(?:\.\d+)?)$"
⋮
│@dataclass(frozen=True)
│class MarkAddress:
│    base: str
⋮
│    def as_span(self) -> dict[str, Any]:
⋮
│def parse_clock_time(text: str) -> float | None:
⋮
│def parse_time_range(text: str) -> tuple[float, float | None] | None:
⋮
│def split_mark_address(target: str) -> tuple[str, MarkAddress | None]:
⋮
│def format_clock_time(seconds: float) -> str:
⋮

```

```console
$ contextualize --count cat README.md \
    src/contextualize/references/address.py
Total: 1195 tokens (cl100k_base).
```

Next: [Arena Block](https://fjpaz.net/projects/arena-block/)
