Initial Build #3
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
akinus/corten#3
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Corten — Project Guide for OpenCode
What is Corten?
Corten is a Rust-based file tagging system with a FUSE virtual filesystem, semantic tag taxonomy, and built-in AI auto-tagging via Ollama. It is the spiritual successor to AkTags, rebuilt around the TMSU concept but extended with AI integration, a file watcher, and an MCP server.
The name comes from corten steel — a material that rusts intentionally, forming a protective oxide layer. Corten does the same for your filesystem: it imposes deliberate, protective structure on file chaos.
Corten is part of the AK metalworking ecosystem:
Core Design Philosophy
The tag taxonomy is the memory. No opaque embeddings. No black box ML. Tag names + human-written descriptions are the only persistent knowledge store. AI decisions are always explainable because they reference visible, editable descriptions.
Every tag has a description. A tag is not just a word. It is a word + a human-readable statement of purpose. Example: tag
reference, descriptionFiles I may want to look up later but don't need to act on now.This description is what the AI reads when deciding whether to apply a tag.AI suggestions must include descriptions. When the AI suggests a new tag that doesn't exist yet, it must provide a proposed description. The user sees both the tag name and the AI's reasoning before accepting.
Corrections propagate forward automatically. When a user edits an AI suggestion or its description, that refined description influences all future tagging decisions without any explicit retraining. The taxonomy gets smarter over time naturally.
Any file type is supported. Corten extracts meaningful content from any file via a trait-based ingest pipeline. For opaque files it falls back to filename, path, MIME type, and directory context — which is often sufficient.
Architecture Overview
Database Schema
Key Crates
CLI Interface
Boolean query syntax (same as TMSU):
AI Auto-tagging — How It Works
Prompt construction
When suggesting tags for a file, Corten:
Review flow
corten suggest --reviewIngest Pipeline — Extractor Trait
Extractors are registered in priority order. The pipeline tries each in sequence and falls back to the filename/path extractor if none produce output. Implement a new extractor by implementing this trait and registering it — no other changes needed.
FUSE Virtual Filesystem Layout
This is identical to TMSU's VFS layout so existing TMSU muscle memory transfers directly.
File Watcher
The
notifycrate watches registered directories for:corten repair)Run as a background daemon or as a systemd user service:
MCP Server
Corten exposes an MCP server so any LLM (LibreChat agents, OpenCode, etc.) can interact with the tag taxonomy directly.
Tools exposed:
Start the MCP server:
Ollama Configuration
Corten connects to Ollama at
http://ollama.akinus21.comby default.Config file at
~/.config/corten/config.toml:Build Order / Suggested Starting Point
Start with the core data layer before anything else:
corten init+ DB schema — get the SQLite schema working with tags requiring descriptions enforced at the DB levelcorten tag new— tag creation with interactive description promptcorten tag <file>— basic file taggingcorten files <query>— boolean query enginecorten suggest— AI suggestions with description requirementForgejo Repository
forge.akinus21.com/akinus/cortenakinusakclipfor Forgejo Actions pipelineNotes
fuse3crate requires thefusekernel module. On Bluefin this is available asfuse3— confirmed present on your setup.Thanks for reporting - a maintainer will investigate.
Auto-closed: an AI-generated fix has been opened as a PR against the devops branch. Merge it to land the change.
Auto-closed: an AI-generated fix has been opened as a PR against the devops branch. Merge it to land the change.