Skip to content
OSINT Tradecraft
OSINT Tradecraft
Investigation skills · Vol. 8
Docs · Install · Llama

Llama, local and offline.

A local Llama runs entirely on your machine, which is exactly where sensitive casework belongs. The skills are plain Markdown, so you load a SKILL.md into the model's system prompt — through an Ollama Modelfile, a llama.cpp flag, or an agent framework — and the methodology rides along on every turn.

§ 01

Path A — Ollama Modelfile.

Bake a skill into a custom model with a SYSTEM block. Paste the skill's contents between the triple quotes:

# Modelfile
FROM llama3.1:8b

SYSTEM """
Follow this investigative methodology exactly, including its
stop-points. Cite every finding to a source with a timestamp.

<paste the contents of
 skills/seed-discovery-from-email/SKILL.md here>
"""

Then build and run it:

ollama create osint-seed-discovery -f ./Modelfile
ollama run osint-seed-discovery "Work up jane.doe@example.com."

One model per skill (or per themed group of skills) keeps each one sharp. Name them by case type so ollama list reads like a toolkit.

§ 02

Path B — llama.cpp & agent frameworks.

1

Download & unzip

From your dashboard, download the bundle and unzip it. The skill files sit under <bundle>/skills/<slug>/SKILL.md.
2

llama.cpp — pass it as the system prompt

./llama-cli -m llama-3.1-8b-instruct.gguf \
  --system-prompt-file \
    skills/ssl-certificate-pivoting/SKILL.md \
  -p "Who runs shellco-llc.com?"
3

CrewAI / LangChain — load it as context

In an agent framework, read the skill file and pass it as the agent's backstory, system message, or a knowledge document:

from pathlib import Path
from crewai import Agent

skill = Path(
    "skills/username-enumeration-across-platforms/SKILL.md"
).read_text()

investigator = Agent(
    role="OSINT investigator",
    goal="Follow the loaded methodology exactly; cite every finding.",
    backstory=skill,            # the SKILL.md drives the behavior
    llm="ollama/llama3.1:8b",
)
4

Or use the ~/.skills convention

Skill-aware local harnesses look in a ~/.skills directory. Copy the bundle's skills there, one folder each:

mkdir -p ~/.skills
cp -r osint-foundations/skills/* ~/.skills/

# ~/.skills/
#   seed-discovery-from-email/SKILL.md
#   ssl-certificate-pivoting/SKILL.md
#   …
5

Run a case

Give the model a real task. It should name the methodology it's applying and move through the steps in order, instead of guessing.

What to expect

Smaller local models (7–8B) follow a methodology well when one skill is in the system prompt, but they get fuzzy if you cram many in. Keep the active skill set tight, and prefer the Modelfile-per-skill approach over one giant system prompt. A larger Llama (70B) holds more skills at once before quality slips.

One skill in the prompt beats fifty in the folder.

The ~/.skills directory can hold your whole library, but only load what a case needs into context. A local model's context window is the real budget — don't paste 600 skills into one system prompt and expect crisp tradecraft. Select per case; build a named Modelfile for the case types you run often.

Install · Llama · OSINT Tradecraft