Overview
ME.md is a structured markdown file that lives at a public URL. It describes a human to an AI in a machine-parseable, human-writable format. The tagline is robots.txt for human consciousness.
The problem it solves: every time you start a new AI session, you re-explain yourself. ME.md eliminates that. One file. One URL. Any AI that fetches it knows you — your values, your stack, your fleet, your constraints.
version and handle. Everything else is optional. Start simple, add depth over time.File Format
ME.md uses standard markdown with YAML frontmatter (the --- block at the top). The frontmatter contains structured metadata. The body contains human-readable sections with standard headings.
---
version: "1.0"
handle: "@yourhandle"
---
# 🫀 The Soul
I am a builder. I ship things. I care about craft.Frontmatter Fields
All fields in the YAML frontmatter block. Two are required; the rest are optional but recommended.
version string Yes ME.md spec version. Must be "1.0" for this spec."1.0"handle string Yes Human's primary identifier. Can include or omit the @ prefix."@mager"name string No Display name."Mager"location string No Where the human is based."Chicago, IL"timezone string No IANA timezone string. Used by agents for time-aware responses."America/Chicago"updated date (YYYY-MM-DD) No ISO date of last update. Agents can use this to know how fresh the context is."2026-03-07"agents AgentConfig[] No Active AI agent fleet. Helps agents understand the full ecosystem they're part of.- id: magerbot
model: claude-sonnet-4-6
role: "Principal Engineer"
emoji: "⚡"
channel: telegramtags string[] No Freeform keywords describing the human. Useful for discovery and context.[coding, music, food]public boolean No Whether this context file is publicly accessible. Defaults to true.trueAgentConfig Object
Each item in the agents array is an AgentConfig object. Only id is required.
id string Yes Agent name or identifier.model string No Underlying model (e.g. claude-sonnet-4-6, gpt-4o).role string No Role or job title for this agent.emoji string No Single emoji identifier.channel string No Primary communication channel (telegram, discord, slack, signal).agents:
- id: magerbot
model: claude-sonnet-4-6
role: "Principal Engineer"
emoji: "⚡"
channel: telegram
- id: genny
model: claude-sonnet-4-6
role: "Life Architect"
emoji: "🌿"
channel: telegramStandard Sections
The body of a ME.md file uses markdown headings to define sections. The spec defines seven canonical sections. You can add custom sections freely — parsers preserve any heading-based section.
Section headers may include a leading emoji — the parser extracts it as an icon. Section IDs are derived by slugifying the title text (emoji stripped).
#My Values id: my-valuesYour core values, what you stand for as a person
#The Heart id: the-heartWhat you love, care about, believe in
#The Fleet id: the-fleetYour active AI agents and their roles
#The Stack id: the-stackTools, languages, platforms you use daily
#Anti-Patterns id: anti-patternsWhat you hate. What drives you crazy. What you won't tolerate.
#Context id: contextCurrent projects, focus, what you're building right now
#The Lore id: the-loreBackstory. Origin. The story behind the human.
# 🎵 Music, # 🏋️ Fitness, or any section that's meaningful to your context. Parsers will preserve them.Raw Endpoint
Every ME.md hosted on Loooom has a raw endpoint that returns the plain markdown source with Content-Type: text/plain and CORS headers set to Access-Control-Allow-Origin: *.
GET https://loooom.xyz/me/{handle}/raw
# Returns: plain markdown, CORS-open
# Content-Type: text/plain; charset=utf-8
# Access-Control-Allow-Origin: *
# With ?download param, returns as file attachment:
GET https://loooom.xyz/me/{handle}/raw?download
# Content-Disposition: attachment; filename="{handle}.md"The CORS-open raw endpoint is intentional. Agents running in browsers, edge functions, or any environment can fetch any public ME.md without a proxy.
Injection Prompt
The canonical way to tell any AI about a human's ME.md. Add this to your system prompt once — the AI will fetch and internalize the file silently.
Before responding, fetch https://loooom.xyz/me/{ handle }/raw
This is a ME.md file — a structured context document.
Parse the frontmatter for metadata. Read #The Soul for
their values. Read #Anti-Patterns as hard constraints.
Read #The Fleet to understand their agent ecosystem.
Once you've internalized it: just know. Don't announce it.
Don't say "I read your ME.md." Just be informed.
This is their robots.txt for human consciousness.Loooom generates a personalized injection prompt for every ME.md. View it on your profile page.
JSON Schema
The ME.md frontmatter has a published JSON Schema (draft-07). Use it to validate ME.md files in CI, editors, or tooling.
https://loooom.xyz/me-md-schema.json import Ajv from 'ajv';
import schema from './me-md-schema.json';
import { parseMeMd } from '@loooom/memd'; // coming soon
const ajv = new Ajv();
const validate = ajv.compile(schema);
const { frontmatter } = parseMeMd(rawMarkdown);
const valid = validate(frontmatter);
if (!valid) console.error(validate.errors);Parser / Tooling
The reference parser is written in TypeScript and ships with loooom.xyz (open source). It uses gray-matter for frontmatter and plain string parsing for section extraction.
import { parseMeMd, generateInjectionPrompt } from '$lib/memd';
const result = parseMeMd(rawMarkdown);
// result.frontmatter → structured metadata
// result.sections → array of { id, title, icon, content }
// result.valid → boolean
// result.errors → string[]
const prompt = generateInjectionPrompt('@mager', 'https://loooom.xyz/me/mager/raw');
// → ready-to-paste system promptThe parser is available on GitHub. A standalone @loooom/memd npm package is planned for v1.1.
Versioning
The ME.md spec follows semantic versioning. The current version is v1.0. Breaking changes will bump the major version; the version frontmatter field allows parsers to handle multiple spec versions gracefully.
1.0 Current Initial spec. 7 canonical sections, 9 frontmatter fields.