{"id":50940642,"url":"https://github.com/night-slayer18/runtime","last_synced_at":"2026-06-17T14:02:29.396Z","repository":{"id":363049316,"uuid":"1261517203","full_name":"night-slayer18/runtime","owner":"night-slayer18","description":"A family of keyboard-first, terminal-native developer TUIs built with Go and Bubble Tea (Grid, Prism, Pulse, Strata, and Vault) in a Go workspace monorepo.","archived":false,"fork":false,"pushed_at":"2026-06-07T07:42:32.000Z","size":303,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-07T08:13:10.527Z","etag":null,"topics":["bubbletea","cli","csv-viewer","database-explorer","go","json-viewer","log-viewer","parquet-viewer","secrets-manager","terminal","tui","yaml-viewer"],"latest_commit_sha":null,"homepage":"https://night-slayer18.github.io/runtime/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/night-slayer18.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-06T19:49:28.000Z","updated_at":"2026-06-07T07:44:19.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/night-slayer18/runtime","commit_stats":null,"previous_names":["night-slayer18/runtime"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/night-slayer18/runtime","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/night-slayer18%2Fruntime","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/night-slayer18%2Fruntime/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/night-slayer18%2Fruntime/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/night-slayer18%2Fruntime/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/night-slayer18","download_url":"https://codeload.github.com/night-slayer18/runtime/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/night-slayer18%2Fruntime/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34451342,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-17T02:00:05.408Z","response_time":127,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bubbletea","cli","csv-viewer","database-explorer","go","json-viewer","log-viewer","parquet-viewer","secrets-manager","terminal","tui","yaml-viewer"],"created_at":"2026-06-17T14:02:28.438Z","updated_at":"2026-06-17T14:02:29.388Z","avatar_url":"https://github.com/night-slayer18.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Runtime\n\nA family of terminal-native developer tools built with Go and [Bubble Tea](https://github.com/charmbracelet/bubbletea). Each tool is keyboard-first, cross-platform, and shares a common foundation — a unified keymap, theme system, and configuration model — while installing and releasing on its own.\n\nRuntime is a Go monorepo: five applications under `apps/` and eleven shared packages under `packages/`. The repository root is **not** a Go module; every app and package is its own module, wired together for local development through `go.work`.\n\n## The app lineup\n\n| App | What it does |\n|-----|--------------|\n| **grid** | Tabular data workbench — reads CSV, TSV, XLSX, Parquet, and Arrow files into a virtualized table. |\n| **prism** | Structured document explorer — tree navigation and search over JSON, YAML, TOML, and XML. |\n| **pulse** | Log exploration — live tailing, regex/substring filtering, and similar-error grouping. |\n| **strata** | Database exploration — connects to PostgreSQL, MySQL, SQLite, MongoDB, and Cassandra through a driver registry. |\n| **vault** | Secrets and configuration explorer — inspects env files, JWTs, certificates, API keys, and Kubernetes secrets with secret masking. |\n\n## Architecture\n\n```\nruntime/\n├── go.work                 Go workspace tying every module together for local dev\n├── Makefile                build, test, lint, install, and versioning targets\n├── apps/                   application modules (independent go modules)\n│   ├── grid/               Tabular data workbench (CSV · TSV · XLSX · Parquet · Arrow)\n│   ├── prism/              Structured document explorer (JSON · YAML · TOML · XML)\n│   ├── pulse/              Log exploration and analysis\n│   ├── strata/             Database exploration and administration\n│   └── vault/              Secrets and configuration explorer\n├── packages/               shared modules (importable by any app)\n│   ├── tui/                Bubble Tea primitives \u0026 the universal keymap\n│   ├── theme/              Design language: palettes, styles, JSON theme files\n│   ├── config/             Cross-platform config loading, persistence \u0026 live reload\n│   ├── table/              Virtualized + streaming table component\n│   ├── tree/               Tree navigation component\n│   ├── search/             Search / filter primitives\n│   ├── plugin/             Plugin registry, capability sandbox \u0026 integrity verification\n│   ├── datasource/         DataSource abstraction (schema / query / iterate)\n│   ├── export/             Export utilities (CSV · JSON · XML · XLSX)\n│   ├── schema/             Schema definition \u0026 validation\n│   └── validation/         Input validation primitives\n├── scripts/                build \u0026 release automation (version.sh, build-smoke.sh)\n├── docs/                   project and per-app documentation\n├── examples/               sample data for every app + a testing guide\n└── .github/workflows/      CI/CD pipelines (ci, lint, security, build, release)\n```\n\nThe dependency direction is one-way: **apps import packages; packages never import apps.** See [docs/architecture.md](docs/architecture.md) for the full layout, module boundaries, and the registry/plugin patterns.\n\n## Requirements\n\n- Go **1.25.x** (every module declares `go 1.25.0`)\n\n## Quick start\n\n```sh\n# 1. Clone\ngit clone https://github.com/runtime-sh/runtime.git\ncd runtime\n\n# 2. Build all apps (binaries land in ./bin/)\nmake build\n\n# 3. Run an app against an example file\n./bin/runtime-grid   examples/grid/people.csv\n./bin/runtime-prism  examples/prism/config.yaml\n./bin/runtime-pulse  examples/pulse/app.log\n./bin/runtime-vault  examples/vault/sample.env\n./bin/runtime-strata sqlite:examples/strata/sample.db\n```\n\nBuild a single app:\n\n```sh\nmake app APP=prism\n```\n\nRun directly without building a binary:\n\n```sh\ncd apps/prism \u0026\u0026 go run ./cmd/prism ../../examples/prism/config.yaml\n```\n\nInstall all apps onto your `PATH` (via `go install`):\n\n```sh\nmake install\n```\n\n## Universal keymap\n\nEvery app honours the same navigation, search, help, and quit bindings (defined in `packages/tui`). Apps add their own bindings on top — see the per-app docs.\n\n| Key | Action |\n|-----|--------|\n| `↑` / `k` | Move up |\n| `↓` / `j` | Move down |\n| `←` / `h` | Move left |\n| `→` / `l` | Move right |\n| `pgup` / `ctrl+u` | Page up |\n| `pgdown` / `ctrl+d` | Page down |\n| `g` | Jump to top |\n| `G` | Jump to bottom |\n| `/` | Search |\n| `?` | Toggle help |\n| `q` / `ctrl+c` | Quit |\n\n## Documentation\n\n- [docs/README.md](docs/README.md) — documentation index\n- [docs/architecture.md](docs/architecture.md) — monorepo layout, module boundaries, registry \u0026 plugin patterns, testing approach\n- [docs/configuration.md](docs/configuration.md) — config schema, file locations, themes, live reload\n- [docs/releasing.md](docs/releasing.md) — cutting releases with `scripts/version.sh` and the release pipeline\n- Per-app guides: [grid](docs/grid.md) · [prism](docs/prism.md) · [pulse](docs/pulse.md) · [strata](docs/strata.md) · [vault](docs/vault.md)\n- [examples/TESTING.md](examples/TESTING.md) — how to exercise each app against the sample data in `examples/`\n\n## Versioning and releases\n\nEach module is versioned and released **independently**. The current version of every module is tracked in a per-module `VERSION` file (all baselined at `v0.1.0`) and managed through [`scripts/version.sh`](scripts/version.sh), which can bump a single module, all apps, all packages, or everything at once, and create + push the matching git tags.\n\n```sh\nmake version-list                                  # show every module's version\nmake version-bump MODULE=apps/grid BUMP=patch      # bump one module\nmake version-bump-all BUMP=minor ARGS=\"--tag\"      # coordinated bump + tag all\n```\n\nPushing a tag triggers `.github/workflows/release.yml`. Tag conventions:\n\n| Tag | Release |\n|-----|---------|\n| `\u003capp\u003e/vX.Y.Z` (e.g. `grid/v0.1.0`) | App release: cross-platform binaries (linux/darwin/windows × amd64/arm64), `SHA256SUMS.txt`, and a changelog. |\n| `packages/\u003cpkg\u003e/vX.Y.Z` (e.g. `packages/theme/v0.1.0`) | Library release: a GitHub Release with a changelog and no binaries. |\n\nFull details in [docs/releasing.md](docs/releasing.md) and [.github/workflows/README.md](.github/workflows/README.md).\n\n## Design principles\n\n- **Terminal-first** — keyboard workflows are primary; mouse support is an optional enhancement\n- **Performance-first** — virtualization, streaming, and lazy loading throughout\n- **Cross-platform** — Linux, macOS, and Windows with no platform-specific code\n- **Shared ecosystem** — one design language, one keymap, one theme and config system\n- **Independent applications** — each app installs and releases on its own\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for workspace setup, the module boundary rules, how to add a new app or shared package, the signed-off commit convention, and how CI gates pull requests.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnight-slayer18%2Fruntime","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnight-slayer18%2Fruntime","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnight-slayer18%2Fruntime/lists"}