Skip to content
View osick's full-sized avatar

Block or report osick

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
osick/README.md

Oliver Sick

Mathematician by training. I build AI systems for enterprise IT that has to work on Monday.

Python Go C++ MCP LangGraph Bedrock Neo4j Qdrant

LinkedIn Hugging Face

WHO-AM-I

I own an AI platform as an architect: agentic environments for SAFe value streams with dozens of teams — the workflows, the MCP servers, the guardrails.

These repositories are where the ideas get tried out before they have to hold up in a place where an outage is a headline.

Twenty-five years of owning quality in critical systems left me with one bias: what you don't measure doesn't work. It shows in almost everything below.

$ oliver --now
role      AI platform architect · product owner
scale     SAFe value stream, dozens of teams, compliant
building  agent environments · MCP servers · Tools · RAG · 
studying  math, math with AI, distilled by machines, a lot of IT
playing   helpmates, chess exhaustively, math puzzles
The trapped knight: 2016 squares on a numbered spiral, then no move is left

The trapped knight. Always jump to the lowest unvisited number on a square spiral. After 2016 squares, every reachable neighbour has been used — stuck on 2084. Colour runs from the first move to the last.


⛏ Legacy modernization with agents

How do you move a legacy system to a modern architecture when the business logic was never documented? In 2025 we did exactly that — 50,000 lines, with agents reconstructing the domain rules from the code itself.

flowchart LR
    L[("COBOL · Smalltalk<br/>Fortran · Pascal")] --> D
    subgraph W ["LangGraph workflow, every step an MCP server"]
        direction LR
        D["Discovery<br/><sub>file catalogue</sub>"] --> A["AST analysis<br/><sub>tree-sitter</sub>"]
        A --> G["Dependency map<br/><sub>graph + cycles</sub>"]
        G --> U["User stories<br/><sub>LLM, with confidence</sub>"]
    end
    U --> B["Migration backlog<br/><sub>readable by stakeholders</sub>"]
    style L fill:#0b4f6c,stroke:#0b4f6c,color:#fff
    style B fill:#1b9aaa,stroke:#1b9aaa,color:#fff
Loading

Most reverse-engineering tools stop at syntax. The interesting part is recovering business intent — and then admitting how confident the machine actually is.

repo what it does
archaeocode Automated software archaeology. Point it at a legacy codebase, get user stories with acceptance criteria and confidence scores, plus a dependency map. COBOL, Fortran, Pascal, Smalltalk alongside Java, Python, JS, TS.

🧩 Context for AI assistants

The model is rarely the problem. The context is. Each of these stands alone — together they are one agent environment.

flowchart LR
    H["AI host<br/><sub>Claude Code · Codex · Copilot · Kiro</sub>"]
    S["ctx.skills<br/><sub>time · ontology · rlm</sub>"]
    Z["aegis-mcp<br/><sub>default-deny · namespaced · audited</sub>"]
    R["repo-ctx<br/><sub>symbols, dep graphs, 12 languages</sub>"]
    M["semrag<br/><sub>Qdrant + Neo4j hybrid</sub>"]
    K["knowledge-mcp<br/><sub>document RAG</sub>"]
    Q["SAIRmcp<br/><sub>challenge API</sub>"]
    S -.-> H
    H <==>|"MCP / stdio"| Z
    Z --> R
    Z --> M
    Z --> K
    Z --> Q
    style Z fill:#d1495b,stroke:#d1495b,color:#fff
    style H fill:#0b4f6c,stroke:#0b4f6c,color:#fff
Loading
repo what it does
repo-ctx MCP server giving an assistant searchable access to any Git repo: real symbol extraction, dependency graphs, architecture analysis across 12+ languages. Local, GitHub, GitLab, whole orgs. PyPI
ctx.skills Agent skills for what LLMs are notoriously bad at: telling the time, keeping knowledge structured, reading inputs larger than the context window. Stdlib-only Python.
semrag Local-first enterprise RAG: unstructured vector similarity (Qdrant) blended with structured graph intelligence (Neo4j) in a stateful LangGraph workflow.
knowledge-mcp Three MCP servers for document ingestion and semantic search over enterprise document stores.

🛡 Verify, don't hope

An agent you cannot constrain is not a tool, it is a risk. An answer you cannot check is not an answer.

repo what it does
aegis-mcp A zero-trust gateway for MCP, in one Go binary. Capability profiles are default-deny, every tool is namespaced by its origin server so it cannot be shadowed, escalations go through human approval, every decision is audited. Fails closed. Go
urllm Point it at any URL, get a grounded GDPR and security audit. Deterministic extraction of the full fingerprint first — cookies, CSP, third-party domains, PII forms, trackers — then the LLM. No raw HTML dumped into a prompt. --fail-on gates your CI.
SpecBench Benchmarked survey of spec-driven development frameworks — the counter-movement to writing code by hoping.

∑ Mathematics

My training, and still the thing I read for pleasure. Currently it is where AI and mathematics meet: I am competing in the Mathematics Distillation Challenge of the SAIR Foundation.

A magma is a set with one binary operation and no laws at all. Impose a single identity, say

$$x \ast y \;=\; y \ast (x \ast x)$$

and you have picked one of 4694 equational laws. Which of them imply which others? That is

$$4694^2 \;=\; 22{,}033{,}636 \quad\text{implications to settle,}$$

the question the Equational Theories Project set out to answer with automated provers and human proofs together.

repo what it does
magmaexplorer An interactive REPL for the human half of that work. Six mechanically-verified derivation primitives; an LLM may propose derivation steps, but the tool re-executes and verifies every one before it is accepted. Exports to YAML and Lean.
SAIRmcp MCP server for the SAIR Challenges API, so an agent can work the competition with me.
the-trapped-knight The picture at the top, generalised to $(x,y)$-knights as Python lib. And the same as Trapped-knight-Javascript lib
How far does a greedy knight get? — computed with the library
knight path length x-diameter y-diameter density
$(1,2)$ 2016 55 56 0.65455
$(1,3)$ 3723 92 91 0.44470
$(2,3)$ 4634 81 81 0.70629
$(1,4)$ 13103 125 125 0.83859
$(17,22)$ 27154 277 278 0.35262
$(18,23)$ 27430 277 283 0.34991

Density is $\text{length}/(x_{\text{diam}} \cdot y_{\text{diam}})$ — how tightly the path folds into the space it uses. No $(x,y)$-knight with an infinite path is known. Nor is one known to be impossible.


♞ Chess

I love playing chess with a decent FIDE rating And chess is sometimes where the mathematics and IT gets a board. In a helpmate, both sides cooperate: Black moves first and helps White mate in the fewest moves. Because both sides want the same thing, it is a cooperative shortest-path problem rather than a min/max tree — so whole material classes become tractable, not just single positions.

pieces classes status
2–4 66 ✅ complete
5 220 ✅ complete
6 645 🚧 9 done, 636 to go
7+ ❌ needs an out-of-core generator that does not exist

295 tables, 38.5 GiB block-compressed, on Hugging Face. The deepest mate in the corpus is h#17. For every legal position the table stores not just the distance to mate but how many optimal solutions tie — so it can tell you whether a composition is sound or has a dual. Anyone can search for a mate; this answers uniqueness, for every position at once.

286 of the missing six-piece tables need only 32 GiB of RAM and about a day of CPU each. If you have a machine that idles overnight, you can compute something nobody ever has. → How to contribute

repo what it does
helpmate-tablebase Every helpmate in a material class, solved exhaustively. Not a solver you point at one position — a table that already knows. MIT
ChessMG The move generator underneath: magic bitboards in C++20, zero-copy Cython bindings, 200M+ moves/sec — roughly 50× a pure-Python generator. Verified against perft to depth 8. pip install chessmg. PyPI

Everything else that is public
repo
amazons Game of the Amazons — engine and analysis
notify-mcp MCP server for team communication and notification
the-trapped-knight.js The spiral, animated on a canvas
CollatzViz · Collatz Collatz sequences, visualised and computed for arbitrarily large integers
collision A small neural network for collision detection
portfolio Stock portfolio proof of concept, Streamlit + yfinance

Daily driver: Claude Code · Codex · GitHub Copilot · AWS Kiro  ·  LinkedIn · Hugging Face ·

Pinned Loading

  1. archaeocode archaeocode Public

    Automated software archaeology — AI agents (LangGraph + MCP) excavate business-readable user stories and dependency maps from COBOL, Smalltalk, Fortran, Pascal & other legacy code.

    CSS

  2. urllm urllm Public

    privacy and security audit for every URL. Deterministic extraction first, LLM then, with --fail-on-Gate for CI/CD

    Python

  3. repo-ctx repo-ctx Public

    MCP-Server: searchable access on every Git repo for AI assistans - Symbols, dependency graps, architecture analysis for 12 languages

    Python

  4. aegis-mcp aegis-mcp Public

    Zero-trust MCP security gateway: default-deny capability profiles, origin-namespaced tools, human-in-the-loop escalation, audit logging — one Go binary between your AI host and its MCP servers

    Go

  5. ChessMG ChessMG Public

    Chess move generation at engine speed with a Python API — the move generator behind the helpmate tablebase project.

    C++

  6. helpmate-tablebase helpmate-tablebase Public

    Exhaustive helpmate tablebases for chess problem composers — complete through 5 pieces. 636 six-piece classes still need computing; contributions wanted.

    C++