# flagstaff > Spinners, progress, boxes and tables on one terminal frame loop, with a static projection for pipes, screen readers and agents, and a plugin host. No dependency outside the burgee family. Drop-in paths for ora, log-update, boxen and cli-table3. ## Documentation - [flagstaff/box](https://flagstaff.interlace.tools/docs/api/box): Every export of flagstaff/box, with its signature and doc comment: box, boxComponent, plus 3 types. - [flagstaff/boxen](https://flagstaff.interlace.tools/docs/api/boxen): Every export of flagstaff/boxen, with its signature and doc comment: boxen, _borderStyles, plus 7 types. - [flagstaff/cli-table3](https://flagstaff.interlace.tools/docs/api/cli-table3): Every export of flagstaff/cli-table3, with its signature and doc comment: strlen, pad, truncate, wordWrap, hyperlink, mergeOptions and 8 more, plus 3 types. - [flagstaff/diff](https://flagstaff.interlace.tools/docs/api/diff): Every export of flagstaff/diff, with its signature and doc comment: diff, plus 1 type. - [flagstaff/import](https://flagstaff.interlace.tools/docs/api/import): Every export of flagstaff/import, with its signature and doc comment: fromCliSpinners, fromCliBoxes, plus 4 types. - [flagstaff](https://flagstaff.interlace.tools/docs/api): Every export of flagstaff, with its signature and doc comment: hoist, manualClock, frameWriter, box, boxComponent, fromCliSpinners and 14 more, plus 32 types. - [flagstaff/log-tail](https://flagstaff.interlace.tools/docs/api/log-tail): Every export of flagstaff/log-tail, with its signature and doc comment: logTail, plus 3 types. - [flagstaff/log-update](https://flagstaff.interlace.tools/docs/api/log-update): Every export of flagstaff/log-update, with its signature and doc comment: createLogUpdate, logUpdateStderr, logUpdate, plus 4 types. - [flagstaff/loop](https://flagstaff.interlace.tools/docs/api/loop): Every export of flagstaff/loop, with its signature and doc comment: hoist, manualClock, frameWriter, plus 6 types. - [flagstaff/markdown](https://flagstaff.interlace.tools/docs/api/markdown): Every export of flagstaff/markdown, with its signature and doc comment: markdownBlocks, markdown, plus 3 types. - [flagstaff/ora](https://flagstaff.interlace.tools/docs/api/ora): Every export of flagstaff/ora, with its signature and doc comment: ora, oraPromise, spinners, Ora, plus 10 types. - [flagstaff/plugin](https://flagstaff.interlace.tools/docs/api/plugin): Every export of flagstaff/plugin, with its signature and doc comment: validate, register, registered, lookupSpinner, lookupBorder, glyph and 2 more, plus 5 types. - [flagstaff/progress](https://flagstaff.interlace.tools/docs/api/progress): Every export of flagstaff/progress, with its signature and doc comment: progress, plus 2 types. - [flagstaff/spinner](https://flagstaff.interlace.tools/docs/api/spinner): Every export of flagstaff/spinner, with its signature and doc comment: spinner, plus 2 types. - [flagstaff/tab-bar](https://flagstaff.interlace.tools/docs/api/tab-bar): Every export of flagstaff/tab-bar, with its signature and doc comment: tabBar, plus 2 types. - [flagstaff/table](https://flagstaff.interlace.tools/docs/api/table): Every export of flagstaff/table, with its signature and doc comment: table, tableComponent, plus 6 types. - [flagstaff/tasks](https://flagstaff.interlace.tools/docs/api/tasks): Every export of flagstaff/tasks, with its signature and doc comment: tasks, plus 4 types. - [Changelog](https://flagstaff.interlace.tools/docs/changelog): Every release of flagstaff, newest first, from its CHANGELOG.md — what changed and the pull request it came from. - [Coming from boxen](https://flagstaff.interlace.tools/docs/coming-from/boxen): A boxen alternative with a drop-in path: import boxen from flagstaff/boxen, graded 213 / 213 by boxen's own test suite — then a box component whose static projection gives a pipe, an agent and a screen reader the text and title, not the border. - [Coming from cli-table3](https://flagstaff.interlace.tools/docs/coming-from/cli-table3): A cli-table3 alternative with a drop-in path: import Table from flagstaff/cli-table3, graded 29 / 29 by cli-table3's own test suite — then a table component whose static projection gives a pipe and an agent one line of header: value pairs per row. - [Coming from log-update](https://flagstaff.interlace.tools/docs/coming-from/log-update): A log-update alternative with a drop-in path: import logUpdate from flagstaff/log-update, graded 99 / 99 by log-update's own test suite — then a frame loop whose static projection gives pipes one line per state and --json one event per transition. - [Coming from ora](https://flagstaff.interlace.tools/docs/coming-from/ora): An ora alternative with a drop-in path: import ora from flagstaff/ora, graded 223 / 223 by ora's own test suite — then a frame loop whose static projection gives pipes one line per state and --json one event per transition. - [Compatibility](https://flagstaff.interlace.tools/docs/drop-ins): How flagstaff's four drop-ins are graded — each incumbent's own test suite, unedited — the current grades, and the differences that remain. - [FAQ](https://flagstaff.interlace.tools/docs/faq): Short answers about flagstaff — the runtime, modes, stdout versus stderr, Ink, CommonJS, colours and testing — each with where to read more. - [Getting started](https://flagstaff.interlace.tools/docs/getting-started): Install flagstaff, hoist a spinner, and see the same three calls in a terminal, in a pipe and under --json. - [NO_COLOR and accessibility](https://flagstaff.interlace.tools/docs/guides/accessibility): How flagstaff decides colour and redraws — NO_COLOR, FORCE_COLOR, --color, CLI_ACCESSIBLE — and what a screen-reader user gets. - [Boxes](https://flagstaff.interlace.tools/docs/guides/boxes): Draw a box as a string with box(), or hoist boxComponent() so a pipe gets "title: text" instead of a border. - [Live regions](https://flagstaff.interlace.tools/docs/guides/live-regions): Redraw a block of lines in place with flagstaff/log-update, or with a component that also has a text form for pipes. - [Plugins](https://flagstaff.interlace.tools/docs/guides/plugins): Add spinners, borders, glyphs, colour tokens and components as one plain object, validated at register() and checked before it ships with flagstaff check. - [Spinners, progress and task lists](https://flagstaff.interlace.tools/docs/guides/spinners): The three components that show work in motion — spinner, progress and tasks — and what each prints off a terminal. - [The static projection](https://flagstaff.interlace.tools/docs/guides/static-projection): What a component prints in a pipe, in CI, for a screen reader and under --json — and how to write one. - [Tables](https://flagstaff.interlace.tools/docs/guides/tables): Draw a table as a string with table(), or hoist tableComponent() so a pipe gets header-and-value pairs and --json gets the rows. - [flagstaff](https://flagstaff.interlace.tools/docs): Spinners, progress, boxes and tables on one terminal frame loop, with a static projection for pipes, screen readers and agents, and a plugin host. No dependency outside the burgee family. Drop-in paths for ora, log-update, boxen and cli-table3. - [Build steps as a task list](https://flagstaff.interlace.tools/docs/recipes/build-steps): Run a list of async steps under a task list that animates on a terminal, prints each step once as it settles in CI, and stops at the first failure. - [Moving off ora a file at a time](https://flagstaff.interlace.tools/docs/recipes/incremental-migration): Change ora's import to flagstaff/ora today, keep its behaviour to the byte, and move each spinner onto hoist() when that file is next touched. - [Progress in logs](https://flagstaff.interlace.tools/docs/recipes/progress-in-logs): Keep a progress bar readable in a CI log by updating it in steps — one line per tenth of the work instead of one per item. - [Results an agent can read](https://flagstaff.interlace.tools/docs/recipes/results-for-agents): Print a results table that is a grid on a terminal, header-and-value lines in a log, and plain JSON rows under --json. - [Testing terminal output](https://flagstaff.interlace.tools/docs/recipes/testing-output): Assert a spinner's terminal output byte for byte with manualClock and a literal runtime — no fake timers, no terminal. - [Why flagstaff](https://flagstaff.interlace.tools/docs/why-flagstaff): flagstaff against ora, log-update, boxen and cli-table3, one capability per row, every cell linked to the test, grade or source that proves it. ## Family - [burgee](https://burgee.interlace.tools): the family front door - [Compatibility](https://burgee.interlace.tools/docs/compatibility): Every drop-in path in the family, graded by the incumbent’s own test suite. - [Gallery](https://burgee.interlace.tools/docs/gallery): Every glyph, spinner and border the family has registered, rendered. - [Comparison](https://burgee.interlace.tools/docs/comparison): The family against its incumbents: weight, speed and surface.