Render any input as a portico – a three-layer ASCII visualization.
Project description
install
pipx install portico-cli
try it
portico README.md
portico https://example.com/article
portico ./src --no-legend
echo "your text here" | portico -
what is a portico
An LLM reads your input, decides what kind of thing it is, and decomposes it into three layers. The renderer turns those layers into a fixed ASCII shape.
| glyph | layer | meaning |
|---|---|---|
^ |
roof | the unifying idea |
ii |
pillars | the load-bearing components (2-9 of them) |
_ |
base | the foundation everything rests on |
examples
short, medium, long.
hello world
echo "hello world" | portico -
── snippet: hello world ────────────────────────────────────────────────────────
***
__ === ◇ === __
╔════════════════════════╗
║ salutation ║
╚════════════════════════╝
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▀██▀ ▀██▀
██ ██
██ ██
hello world
██ ██
██ ██
▄██▄ ▄██▄
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
╔══════════════════════════════════╗
║ coding convention ║
╚══════════════════════════════════╝
legend:
^ salutation: a greeting addressed at the world.
ii hello: the act of greeting.
ii world: the recipient.
_ coding convention: the canonical first program in any toolchain.
───────────────────────────────────────────────────────────── built with _ii^ ──
a github repo
portico https://github.com/binwiederhier/ntfy
── software README: ntfy ───────────────────────────────────────────────────────
***
__ === ◇ === __
╔════════════════════════════════════════════════════════╗
║ Scriptable Notifications ║
╚════════════════════════════════════════════════════════╝
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▀██▀ ▀██▀ ▀██▀ ▀██▀
██ ██ ██ ██
██ ██ ██ ██
Service Access Apps & Clients Community & Contributions
██ ██ Support ██
██ ██ ██ ██
██ ██ ██ ██
▄██▄ ▄██▄ ▄██▄ ▄██▄
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
╔══════════════════════════════════════════════════════════════════╗
║ Open-source licensing | Third-party libraries ║
╚══════════════════════════════════════════════════════════════════╝
legend:
^ Scriptable Notifications: Send phone or desktop notifications from any script via a simple HTTP pub-sub service, with no sign-up required.
ii Service Access: ntfy is available as a hosted free tier at ntfy.sh, a paid ntfy Pro plan, or a self-hosted open-source instance.
ii Apps & Clients: Native Android and iOS apps, plus a web app, let users subscribe to and receive notifications across platforms.
ii Community & Support: Discord, Matrix, and GitHub Issues provide channels for chat, bug reports, feature requests, and beta announcements.
ii Contributions: Code PRs, issue reports, and Weblate translations are welcomed, with larger features discussed on Discord or Matrix first.
_ Open-source licensing | Third-party libraries: The project is dual-licensed under Apache 2.0 and GPLv2, and is built on a stack of open-source libraries covering the CLI, web app, database, push delivery, and more.
───────────────────────────────────────────────────────────── built with _ii^ ──
a long-form essay
portico https://www.wiisfi.com/
── technical guide: Wi-Fi Upgrade Guide ────────────────────────────────────────
***
__ === ◇ === __
╔══════════════════════════════════════════════════════════════╗
║ Client-Limited Wi-Fi ║
╚══════════════════════════════════════════════════════════════╝
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▀██▀ ▀██▀ ▀██▀ ▀██▀ ▀██▀
██ ██ ██ ██ ██
██ ██ ██ ██ ██
Speed Wi-Fi Deployment Alternative Diagnostics &
Fundamentals Generations Architecture Backhaul Config
██ ██ ██ ██ ██
██ ██ ██ ██ ██
▄██▄ ▄██▄ ▄██▄ ▄██▄ ▄██▄
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
╔════════════════════════════════════════════════════════════════════════╗
║ Educational purpose | Empirical measurement ║
╚════════════════════════════════════════════════════════════════════════╝
legend:
^ Client-Limited Wi-Fi: Real-world Wi-Fi performance is governed by client device constraints and physical distance, not by router marketing figures, and informed decisions require cutting through manufacturer hype.
ii Speed Fundamentals: PHY speed is determined by channel width, MIMO level, and QAM modulation; the Throughput-to-PHY Ratio runs ~70%, and advertised aggregate speeds are fictional sums irrelevant to any real 2×2 client.
ii Wi-Fi Generations: Wi-Fi 4 through Wi-Fi 7 each advanced primarily through wider channels and higher QAM rather than generation changes alone, with Wi-Fi 6's 160 MHz support and Wi-Fi 7's 320 MHz channels being the meaningful inflection points.
ii Deployment Architecture: Wired access points on non-overlapping channels outperform range extenders and mesh systems; the preferred model is a 4×4 MIMO router plus Ethernet-connected APs following the 'Wi-Fi AIR' philosophy.
ii Alternative Backhaul: When Ethernet cannot be run, MoCA 2.5 over coax, powerline adapters, buried fiber, and wireless bridges provide progressively capable substitutes, each with specific limitations and use conditions.
ii Diagnostics & Config: PHY speed checks, channel analysis, DFS verification, router configuration best practices, and systematic troubleshooting steps enable readers to confirm whether any upgrade actually improved real-world throughput.
_ Educational purpose | Empirical measurement: The guide is grounded in a commitment to ad-free reader education and in direct measurement—checking PHY speeds, running speed tests before and after changes, and verifying specs against FCC filings—rather than trusting manufacturer claims.
───────────────────────────────────────────────────────────── built with _ii^ ──
inputs
- raw text or stdin
- local files and directories
- URLs (page content is extracted)
- git repositories
When an input doesn't fit a three-layer shape -- poems, flat lists, gibberish -- portico refuses honestly rather than fake one.
customization
| flag | what it does |
|---|---|
--no-legend |
hide the per-layer summary (legend renders by default) |
--color {auto,always,never} |
colorize roof / pillars / base. default: never |
--reapex[=N] |
roll a random apex ornament; pin seed N to reproduce |
--json |
emit the analyzer's JSON instead of rendering |
--diagnose |
print a pipeline report (input type, model, fit quality) and exit |
Run portico --help for the full list.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file portico_cli-0.1.2.tar.gz.
File metadata
- Download URL: portico_cli-0.1.2.tar.gz
- Upload date:
- Size: 24.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d749876a98b3d844fd49ee4ae2104b191c0efb560f8456c7ef8d46e7254948a0
|
|
| MD5 |
7ce4566253619bac9189f9cce3d39582
|
|
| BLAKE2b-256 |
13c6d2b91f2994fdfcc153d31461be15da3df7dc4ec57410863e9683a15340b8
|
File details
Details for the file portico_cli-0.1.2-py3-none-any.whl.
File metadata
- Download URL: portico_cli-0.1.2-py3-none-any.whl
- Upload date:
- Size: 32.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
48aea45e1c10d3a31347b223cb673dd0326e4588d90f98530498ca8956d3f068
|
|
| MD5 |
95caf1afb16ee9a305c74336326a820b
|
|
| BLAKE2b-256 |
1cb094c42fe4003ee9934061cf19baa7530b13f26ae1e4804c3f4b4c21ab1aea
|