Problem Statement
Currently Arbor assumes either a monolithic index (everything in one graph) or completely separate indexes per project. This creates friction for developers who work on:
- Related but separate repositories (e.g., a Rust library ecosystem with
lib-core, lib-parser, lib-viewer in different directories)
- Multiple unrelated projects where indexing everything together pollutes the graph and slows queries
- Context switching between project groups without re-indexing
The filesystem hierarchy becomes the only way to define "related code," which doesn't reflect how developers actually think about project relationships.
Proposed Solution
Introduce a tagging system that allows logical grouping of indexed projects independent of filesystem structure:
# Index with tags
arbor index --tag lighting # run in each lighting project
arbor index --tag experimental # separate experiments
arbor index --tags lighting,oss # multiple tags supported
# Query specific groups
arbor bridge --tag lighting # only lighting ecosystem
arbor bridge --tags lighting,experimental # combine groups
arbor bridge --exclude-tag experimental # exclude specific tags
# Manage tags
arbor tags list # show all tags and their projects
arbor tags add lighting ./path/to/project
arbor tags remove experimental ./path/to/project
Alternatives Considered
- Workspace manifest file (
arbor-workspace.toml listing project paths) — Less flexible, requires central config file maintenance
- Symlink-based grouping — Hacky, filesystem-dependent, breaks on Windows
- Multiple Sled databases — Current workaround, but no cross-group queries possible
Implementation Ideas
Storage schema addition
// arbor-graph/src/metadata.rs
pub struct ProjectMetadata {
pub root_path: PathBuf,
pub tags: HashSet<String>,
pub indexed_at: DateTime<Utc>,
}
// Tag index in Sled: "tag:{tag_name}" -> Vec<project_root_paths>
Additional Context
Real-world use case: I maintain a lighting industry library ecosystem (gldf-rs, l3d-rs, eulumdat-rs, uld-rs) that are logically connected but live in separate repositories. I also work on unrelated projects (acadlisp, portfolio site).
Currently I must either:
- Index everything → bloated graph, irrelevant results when working on one ecosystem
- Maintain separate indexes → lose cross-crate intelligence within the lighting ecosystem
Tags would let me arbor bridge --tag lighting when working on lighting projects, keeping the graph focused while preserving cross-crate edges.
Problem Statement
Currently Arbor assumes either a monolithic index (everything in one graph) or completely separate indexes per project. This creates friction for developers who work on:
lib-core,lib-parser,lib-viewerin different directories)The filesystem hierarchy becomes the only way to define "related code," which doesn't reflect how developers actually think about project relationships.
Proposed Solution
Introduce a tagging system that allows logical grouping of indexed projects independent of filesystem structure:
Alternatives Considered
arbor-workspace.tomllisting project paths) — Less flexible, requires central config file maintenanceImplementation Ideas
--tag/--tagsflag forarbor index--tag/--tags/--exclude-tagflags forarbor bridgearbor tagssubcommand for tag managementlist_tagsas MCP toolStorage schema addition
Additional Context
Real-world use case: I maintain a lighting industry library ecosystem (
gldf-rs,l3d-rs,eulumdat-rs,uld-rs) that are logically connected but live in separate repositories. I also work on unrelated projects (acadlisp, portfolio site).Currently I must either:
Tags would let me
arbor bridge --tag lightingwhen working on lighting projects, keeping the graph focused while preserving cross-crate edges.