{"id":13574244,"url":"https://github.com/terrastruct/TALA","last_synced_at":"2025-04-04T14:32:03.654Z","repository":{"id":64299937,"uuid":"560587826","full_name":"terrastruct/TALA","owner":"terrastruct","description":"A diagram layout engine designed specifically for software architecture diagrams","archived":false,"fork":false,"pushed_at":"2025-02-19T16:52:41.000Z","size":7773,"stargazers_count":231,"open_issues_count":27,"forks_count":8,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-04T07:36:28.320Z","etag":null,"topics":["diagrams","layout-engine"],"latest_commit_sha":null,"homepage":"https://terrastruct.com/tala","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/terrastruct.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2022-11-01T20:30:55.000Z","updated_at":"2025-04-03T03:20:41.000Z","dependencies_parsed_at":"2023-11-10T23:27:25.492Z","dependency_job_id":"96ba660e-51d7-42bc-abb4-969158bfaca9","html_url":"https://github.com/terrastruct/TALA","commit_stats":null,"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terrastruct%2FTALA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terrastruct%2FTALA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terrastruct%2FTALA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terrastruct%2FTALA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/terrastruct","download_url":"https://codeload.github.com/terrastruct/TALA/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247142062,"owners_count":20890652,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["diagrams","layout-engine"],"created_at":"2024-08-01T15:00:48.665Z","updated_at":"2025-04-04T14:32:03.630Z","avatar_url":"https://github.com/terrastruct.png","language":"Shell","readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg width=\"205\" alt=\"TALA logo\" src=\"https://user-images.githubusercontent.com/3120367/211999109-3b1ef11c-8efa-4473-aa8c-5ef43d7dc962.png\"\u003e\n  \u003ch1\u003e\n    TALA\n  \u003c/h1\u003e\n \u003c/div\u003e\n\n\nTALA is a diagram layout engine designed specifically for software architecture diagrams,\nthough it works well in other domains too.\n\nTALA is closed-source. This repository is primarily for installation instructions. You can\nalso use this repository to report issues, ask questions, and request features.\n\nTo learn more about TALA, please visit\n[https://terrastruct.com/tala](https://terrastruct.com/tala). Note that this is a paid\nlayout engine, which requires a license for any commercial use. The license is purchasable\nin that same link. TALA is free to evaluate, but without a license, will render with a\nwatermark.\n\nTo compare TALA with other layout engines, please visit\n[https://text-to-diagram.com](https://text-to-diagram.com/?a=d2\u0026layout_a=tala\u0026b=d2\u0026layout_b=dagre\u0026example=chess).\n\n[User Manual (PDF)](https://github.com/terrastruct/TALA/raw/master/TALA_User_Manual.pdf)\n\n## Rendering samples\n\nYou can see the `.d2` text for these in [./docs/d2](./docs/d2). Samples are\n[generated](./ci/generate_samples.sh) through the CLI.\n\n|\u003cimg src=\"./docs/assets/sample_1.svg\" /\u003e|\u003cimg src=\"./docs/assets/sample_2.svg\" /\u003e|\u003cimg src=\"./docs/assets/sample_3.svg\" /\u003e|\n|:-------------------------:|:-------------------------:|:-------------------------:|\n|\u003cimg src=\"./docs/assets/sample_4.svg\" /\u003e|\u003cimg src=\"./docs/assets/sample_5.svg\" /\u003e|\u003cimg src=\"./docs/assets/sample_6.svg\" /\u003e|\n\n## Installation\n\n### Install script\n\nThe most convenient way to install is through the install script.\n\n```sh\n# With --dry-run the install script will print the commands it will use\n# to install without actually installing so you know what it's going to do.\ncurl -fsSL https://d2lang.com/install.sh | sh -s -- --tala --dry-run\n# If things look good, install for real.\ncurl -fsSL https://d2lang.com/install.sh | sh -s -- --tala\n```\n\nYou can also find binaries [Releases](https://github.com/terrastruct/TALA/releases) page\nfor Linux, MacOS and Windows, for both AMD and ARM. Download the appropriate one for your\nOS to a directory in your path.\n\n### macOS (Homebrew)\n\nIf you're on macOS, you can alternatively install with `brew`. (the install script above\ndoes this automatically if you have `brew` installed).\n\n```sh\nbrew install terrastruct/tap/tala\n```\n\n### Post-install\n\nCheck that it was installed properly:\n\n```sh\nd2 layout tala\n```\n\nIt should print out information about TALA. If not, please see troubleshooting steps.\n\n### Use TALA\n\nYou are now ready to use TALA to layout your diagrams! Specify that D2 should use TALA by\nsetting the environment variable `D2_LAYOUT`.\n\n```sh\nD2_LAYOUT=tala d2 in.d2 out.svg\n```\n\n### Seeds\n\nOptimal placements of nodes that minimizes distance and crossings is an NP-hard problem.\nTALA searches with heuristics to get an approximation. This search space has some\nrandomness at each step. Choosing a different seed for this randomness can have signficant\nimpact on the overall layout, as it may converge on an entirely different one.\n\nFor advanced usage of TALA, you may specify the seed to get a different layout:\n\n```d2\nd2 --layout tala --tala-seeds 44 input.d2\n```\n\n### Add API token (optional)\n\nYou may skip this step if you are just evaluating.\n\n#### As environment variable\n\nIf you have an API token, copy and paste it into your environment variables. E.g.\n\n```bash\nexport TSTRUCT_TOKEN = \"tstruct_...\"\n```\n\n#### As config file\n\nYou can also use a JSON file as config. The benefit to this is that when the TALA license\nexpires and has to renew, it will swap out the key for you automatically in the background\nwith the updated one.\n\nBy default, TALA finds the configuration file at the following path:\n\n`$HOME/.config/tstruct/auth.json`:\n\n```json\n{\n  \"api_token\": \"tstruct_xxx\"\n}\n```\n\nYou can change where this path is by configuring it with the following environment\nvariable:\n\n```bash\nexport TSTRUCT_AUTHFILE = /var/local/...\n```\n\n## License keys\n\nTALA is freely installable and locally runnable for evaluation. You'll need an API token\nfrom your Terrastruct account to run it out of evaluation mode. Alternatively, if you\ndon't want to create an account, you can purchase a personal license key for TALA that\nallows you to run TALA forever with access to updates for 12 months\n[here](https://buy.stripe.com/bIYeXL3cT2Lr23e5ko). If you'd like to get the benefits of a\npaid Terrastruct account at any time after, your license key will allow that.\n\n## Troubleshooting\n\n### TALA not found\n\n```sh\nwhich d2plugin-tala\n```\n\nIf this does not return a directory, then `d2plugin-tala` is not in your path.\n\n```sh\necho $PATH\n```\n\nPlease move the downloaded binary to one of those locations.\n\n### License warning prints even with API token\n\nIn the same terminal that you're running `d2` on, run\n\n```sh\necho $TSTRUCT_TOKEN\n```\n\nIf it is not found, then your environment variable has not been set in your shell. Make\nsure you add it to the appropriate shell config file and `source` it in the running\nterminal.\n\n### Other\n\nPlease open an Issue describing what you're running into and we're happy to help. If you'd\nlike to remain anonymous/private, feel free to email us at info@terrastruct.com\n\n## FAQ\n\n### Does TALA use the internet?\n\nThe TALA plugin do not collect telemetry or use the internet in any way except to ping to\ncheck the status of a license. This is only done when necessary, e.g. if you purchased a\nmonth subscription, TALA will ping at the start of the next month and renew automatically\nif the subscription is ongoing. If you purchased a year, it won't ping for a year. The\n  only data that's sent in these pings is the API token itself. No diagrams or anything\n  else leaves your computer.\n\n### Others\n\nFull FAQ at [https://terrastruct.com/tala](https://terrastruct.com/tala).\n","funding_links":[],"categories":["Shell","others"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fterrastruct%2FTALA","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fterrastruct%2FTALA","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fterrastruct%2FTALA/lists"}