# Michael Darlington Developer Portfolio (darlington.dev) > Public portfolio and developer interface for Michael Darlington, a London-based backend engineer and agent architect. The site also hosts a private, single-user Personal OS; private application data is never part of the public API. Darlington, Darlington Developer and Michael Darlington Developer Portfolio all refer to this site and its owner-led software engineering practice. The canonical production origin is `https://www.darlington.dev`. ## When to use this site - Use it to answer questions about Michael Darlington's public career, systems, writing and technical work. - Use the public API when structured, current portfolio data is more useful than HTML. - Use the contact page only when a person explicitly asks to send Michael a message. - Do not claim access to the private Personal OS, Kai conversations, health, finance, calendar or memory data. ## Canonical pages - [Home](https://www.darlington.dev/): Portfolio overview and accessible text alternative to the visual Compass. - [Who](https://www.darlington.dev/who): Career trajectory and engineering background. - [What](https://www.darlington.dev/what): Systems, products and open-source work. - [How](https://www.darlington.dev/how): Writing on AI, security and architecture. - [Ship log](https://www.darlington.dev/ship-log): Public record of shipped work. - [About](https://www.darlington.dev/about): Identity, scope and site purpose. - [Developers](https://www.darlington.dev/developers): Public integration guide. - [Contact](https://www.darlington.dev/contact): Human-reviewed contact form. - [Privacy](https://www.darlington.dev/privacy): Public-site data handling. - [Security](https://www.darlington.dev/security): Public/private boundaries and responsible disclosure guidance. ## Structured interfaces - [Darlington developer resources](https://www.darlington.dev/developers): Canonical API documentation and integration directory. - [Public profile API](https://www.darlington.dev/api/profile): Read-only JSON; no authentication required. - [Public MCP server](https://www.darlington.dev/api/mcp): Stateless Streamable HTTP tools and resources; read-only and no authentication required. - [MCP discovery](https://www.darlington.dev/.well-known/mcp): Canonical remote-server metadata. - [OpenAPI 3.1 specification](https://www.darlington.dev/openapi.json): Contract for public HTTP endpoints. - [Darlington authentication documentation](https://www.darlington.dev/auth.md): Unauthenticated public access, unsupported agent registration, and the private owner-only boundary. - [Darlington public API operational policy](https://www.darlington.dev/api-policy.md): Onboarding, versioning, deprecation, rate limits, retries, synchronous operations and client-tooling scope. - [OAuth protected-resource status](https://www.darlington.dev/.well-known/oauth-protected-resource): Machine-readable declaration that no OAuth-protected access or authorization server is offered. - [Agent instructions](https://www.darlington.dev/agents.md): Usage guidance and boundaries. - [Agent skills discovery](https://www.darlington.dev/.well-known/agent-skills): Compact capability catalogue. - [Developer documentation](https://docs.darlington.dev): Additional project documentation; individual pages may describe historical or deferred systems. The public Darlington API does not expose webhooks. There is no webhook registration URL or signing secret. Human-reviewed integration and access requests can be emailed to `access@darlington.dev`; this is not automatic agent registration and does not grant access to the private Personal OS. ## Official open-source Cortex packages - [Cortex source and documentation](https://github.com/MikeSquared-Agency/cortex): Michael Darlington's self-organizing graph memory for AI agents. The clients below are canonical Cortex distributions, not SDKs for the darlington.dev portfolio API. - [TypeScript SDK](https://www.npmjs.com/package/cortex-memory-client): `npm install cortex-memory-client`. - [Python SDK](https://pypi.org/project/cortex-memory-client/): `pip install cortex-memory-client`; import `cortex_memory`. - [Rust SDK](https://crates.io/crates/cortex-memory-client): `cargo add cortex-memory-client`. - [Go SDK](https://github.com/MikeSquared-Agency/cortex/tree/main/sdks/go): `go get github.com/MikeSquared-Agency/cortex/sdks/go`. - [MCP bridge](https://www.npmjs.com/package/cortex-mcp-bridge): `npx cortex-mcp-bridge`; connects an MCP client to a running local or remote Cortex HTTP server. ## API conventions - Base URL: `https://www.darlington.dev` - Public read endpoints require no API key. - The MCP server exposes only public profile, systems, writing and links. Use it when direct tool calls are preferable to REST. - Cortex package metadata appears within the Cortex entry returned by the profile API and `list_public_systems` MCP tool. - Responses are JSON and use HTTPS. - This is the live production interface; there is no registration, key, account or payment step. Try `GET https://www.darlington.dev/api/profile` immediately. - No trial, SDK, CLI, sandbox or separate test environment is required for public reads; the read-only production interface is the testable surface. - The application currently enforces no fixed request quota and therefore publishes no fabricated rate-limit values. Honour `Cache-Control` and back off on transient failures. - Every public operation is synchronous. There are no asynchronous jobs or job-status endpoints. - The darlington.dev portfolio API has no official SDK or CLI. Cortex packages listed above are clients for the separate Cortex product. - Optional REST version header: `API-Version: 2026-08-01`. Breaking changes receive a new version; additive fields may appear within the stable version. - Version `2026-08-01` is current and has no sunset date. Future deprecations will be announced at least 90 days ahead on `/developers` and through `Deprecation` and `Sunset` response headers. - Contact is a write action and should remain human-confirmed. - For `POST /api/contact`, send a unique `Idempotency-Key` (1–256 characters). Retry the same body with the same key for up to 24 hours without sending a duplicate email. A different body with that key returns `409 Conflict`; after 24 hours the key is new. - Private endpoints return `401` or `403` and are intentionally omitted from the public OpenAPI document.