https://github.com/tatsh/wiswa
A highly opinionated way to generate and maintain projects with Jsonnet.
https://github.com/tatsh/wiswa
command-line jsonnet project-generator project-management scaffolding
Last synced: about 2 months ago
JSON representation
A highly opinionated way to generate and maintain projects with Jsonnet.
- Host: GitHub
- URL: https://github.com/tatsh/wiswa
- Owner: Tatsh
- License: mit
- Created: 2026-03-25T01:01:48.000Z (3 months ago)
- Default Branch: master
- Last Pushed: 2026-04-25T11:59:17.000Z (about 2 months ago)
- Last Synced: 2026-04-25T13:31:49.834Z (about 2 months ago)
- Topics: command-line, jsonnet, project-generator, project-management, scaffolding
- Language: Python
- Homepage: https://tatsh.github.io/wiswa/
- Size: 6.77 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.txt
- Citation: CITATION.cff
- Codeowners: CODEOWNERS
- Security: SECURITY.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
# wiswa
[](https://www.python.org/)
[](https://pypi.org/project/wiswa/)
[](https://github.com/Tatsh/wiswa/tags)
[](https://github.com/Tatsh/wiswa/blob/master/LICENSE.txt)
[](https://github.com/Tatsh/wiswa/compare/v0.3.1...master)
[](https://github.com/Tatsh/wiswa/actions/workflows/codeql.yml)
[](https://github.com/Tatsh/wiswa/actions/workflows/qa.yml)
[](https://github.com/Tatsh/wiswa/actions/workflows/tests.yml)
[](https://coveralls.io/github/Tatsh/wiswa?branch=master)
[](https://github.com/dependabot)
[](https://wiswa.readthedocs.org/?badge=latest)
[](https://mypy-lang.org/)
[](https://docs.astral.sh/uv/)
[](https://docs.pytest.org/en/stable/)
[](https://github.com/astral-sh/ruff)
[](https://pepy.tech/project/wiswa)
[](https://github.com/Tatsh/wiswa/stargazers)
[](https://github.com/pre-commit/pre-commit)
[](https://prettier.io/)
[](https://bsky.app/profile/Tatsh.bsky.social)
[](https://buymeacoffee.com/Tatsh)
[](irc://irc.libera.chat/Tatsh)
[](https://hostux.social/@Tatsh)
[](https://www.patreon.com/Tatsh2)
A highly opinionated way to generate projects with Jsonnet.
## Installation
We recommend a **global** install so `wiswa` and `wiswa-mcp` are on your `PATH`
from any working directory:
```shell
uv tool install wiswa
```
Or with pipx:
```shell
pipx install wiswa
```
If you prefer not to install globally, add Wiswa as a **development dependency**
of your project—for example `uv add --group dev wiswa`, or list `wiswa` under
`dependency-groups.dev` in `pyproject.toml` and install inside the project
virtual environment with your usual workflow.
## Usage

Add `-d` to show debug logs.
```shell
Usage: wiswa [OPTIONS] [FILE]
Entry point for the Wiswa CLI.
Options:
--cache-time INTEGER Cache expiry time in seconds. [default:
600]
-d, --debug Enable debug output.
-J, --jpath TEXT Add a directory to the Jsonnet search path
(only used when evaluating settings).
--no-cache Disable HTTP response caching.
-o, --output-dir DIRECTORY Output directory for generated files.
-q, --quiet Suppress the progress spinner.
--skip-jsonnet Skip project.jsonnet manifests; settings merge still runs.
--skip-postprocess Skip post-processing steps.
--skip-remote Skip configuring the remote Git host (GitHub or GitLab).
--skip-static Skip copying static files.
--skip-templates Skip Jinja2 template evaluation.
--skip-yarn Skip Yarn download.
-h, --help Show this message and exit.
```
## Remote API tokens (GitHub and GitLab)
When Wiswa configures the remote (`wiswa` without `--skip-remote`), it calls the GitHub or GitLab
API using a **personal access token**. Tokens are read from the environment when supported, or from
the system keyring. Service names include the **repository hostname** so different hosts (for
example GitHub.com, GitHub Enterprise, or self-managed GitLab) keep separate credentials.
Keyring entries use the usual **service name** and **username** fields (for example as shown by
`secret-tool` on Linux or Keychain Access on macOS). The **username** is normally your OS login
name (`whoami`).
### GitHub
1. Service `wiswa-github:`, username your OS user. The hostname is taken from
`repository_uri` (for example `github.com` for `https://github.com/org/repo`).
Example (hostname `github.com`, OS user `alice`):
```shell
python -m keyring set 'wiswa-github:github.com' alice
# paste the token at the prompt
```
### GitLab
1. **Environment:** `GITLAB_TOKEN` (if set, used first).
2. **Preferred:** service `wiswa-gitlab:`, username your OS user (for example
`wiswa-gitlab:gitlab.com`).
3. Same service with **username** equal to the hostname is also checked (for older or alternate
storage patterns).
Example for `gitlab.com`:
```shell
export GITLAB_TOKEN='glpat-...' # optional; overrides keyring
python -m keyring set 'wiswa-gitlab:gitlab.com' "$(whoami)"
```
## MCP Server
Wiswa includes an MCP server (`wiswa-mcp`) that exposes settings discovery tools for AI assistants.
### Claude Code
```shell
claude mcp add wiswa-mcp -- wiswa-mcp
```
### Cursor
Add to `.cursor/mcp.json`:
```json
{
"mcpServers": {
"wiswa-mcp": {
"command": "wiswa-mcp"
}
}
}
```
### GitHub Copilot CLI
Add to `.github/copilot/mcp.json`:
```json
{
"mcpServers": {
"wiswa-mcp": {
"command": "wiswa-mcp"
}
}
}
```