Scripticus server
The index service for Scripticus,
a package manager and registry for scripts. The server provides
manifest-aware search, version and dependency resolution, and the publish
path for a Scripticus registry. Installing this package provides the
scripticus-svr command.
Running the server
scripticus-svr starts the service, printing its version and address on
start-up:
$ scripticus-svr --host 0.0.0.0 --port 8000
scripticus-svr 0.1.0 — serving on http://0.0.0.0:8000 (interactive API docs at http://0.0.0.0:8000/docs)
Both options are optional; the default is 127.0.0.1:8000. The API is
self-describing: interactive docs are served at /docs and the OpenAPI
spec at /openapi.json.
Health check
GET /health returns 200 with {"status": "ok"} while the service is
up. It is deliberately unauthenticated — it's a liveness probe for load
balancers and container orchestrators.
Version
GET /version returns the running server's version, e.g.
{"version": "0.1.1"}.
Package index (read API)
GET /packages/{namespace}/{name}— a package's version listing, newest first by semver precedence. Yanked versions are included and marked ("yanked": true) so pinned lookups can still see them; unknown packages return404.GET /search?q=<substring>&platform=<os>&language=<lang>— packages whose name containsq(all parameters optional), with each result's latest non-yanked version. Yanked versions are invisible to search;platformandlanguagefilter on the artifacts a version actually provides.
The index database defaults to a local SQLite file
(scripticus-index.db); set SCRIPTICUS_INDEX_DB to any SQLAlchemy URL
to point elsewhere. Tables are created automatically on first use.
Publishing
POST /packages publishes a package: a multipart upload of one archive
(as produced by scripticus pack) with your Gitea token in the
Authorization header:
$ curl -X POST http://localhost:8000/packages \
-H "Authorization: token <your-gitea-token>" \
-F archive=@my_tool-1.0.0-linux.macos-bash.tar.gz
The server trusts nothing about the upload: it re-validates the manifest
and package tree, computes the content hash, checks with Gitea (live)
that your token may publish to the manifest's namespace — your own
username, or an organisation you belong to — stores the blob in Gitea's
generic package registry, and only then commits the index record.
Versions are immutable; the one addition an existing version accepts is
an artifact in a new archive format carrying the identical content hash.
Declared package dependencies must be fully namespaced and already
present in the index, and a publish that would create a dependency cycle
is rejected. The library namespace is reserved. The Gitea instance is
configured with SCRIPTICUS_GITEA_URL (default http://localhost:3000).
Docker
Server releases publish a Docker image to
kevinchannon/scripticus-server
(tagged with the release version and latest). The repository's
docker-compose.yml is the full registry bundle — the index service plus
the Gitea instance that provides storage, authentication, and namespace
ownership — and needs no checkout:
$ curl -LO https://raw.githubusercontent.com/kevinchannon/scripticus/main/docker-compose.yml
$ docker compose up -d
$ curl http://localhost:8000/health
{"status":"ok"}
First-run Gitea setup: accounts and organisations are managed in Gitea (http://localhost:3000), and a Scripticus namespace is a Gitea user or organisation, claimed first-come-first-served, with publish rights following Gitea's own membership and ACLs. So, once the bundle is up:
- Register your user in the Gitea web UI (the first registered user is the instance admin), and create an organisation for any shared namespace you want.
- Generate a token under Settings → Applications → Manage Access Tokens with package write and user read scopes.
- Publish with that token (see above).
Licence
MIT
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 scripticus_server-0.3.0.tar.gz.
File metadata
- Download URL: scripticus_server-0.3.0.tar.gz
- Upload date:
- Size: 10.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b66bcf97b613c49544021a0aebc13fa8807529e3af3df4de7556db75f14ee7c2
|
|
| MD5 |
f1d2c4d2ba87f078d9f936e444bbdeca
|
|
| BLAKE2b-256 |
9a4c1794a34204e9994a5f10599e2fc76b13553f46d3d0606643489a182a78c9
|
Provenance
The following attestation bundles were made for scripticus_server-0.3.0.tar.gz:
Publisher:
release.yml on kevinchannon/scripticus
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
scripticus_server-0.3.0.tar.gz -
Subject digest:
b66bcf97b613c49544021a0aebc13fa8807529e3af3df4de7556db75f14ee7c2 - Sigstore transparency entry: 2203942762
- Sigstore integration time:
-
Permalink:
kevinchannon/scripticus@4a9021e1933ac5d5aa82df05aed9bb89da2813dd -
Branch / Tag:
refs/tags/server-v0.3.0 - Owner: https://github.com/kevinchannon
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4a9021e1933ac5d5aa82df05aed9bb89da2813dd -
Trigger Event:
push
-
Statement type:
File details
Details for the file scripticus_server-0.3.0-py3-none-any.whl.
File metadata
- Download URL: scripticus_server-0.3.0-py3-none-any.whl
- Upload date:
- Size: 13.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a804cae63ead56281fa88c5ee94ee5c1aefbf66471f386f9755d08cf6b997f8
|
|
| MD5 |
b798e0addf22ab1120507829c0e35371
|
|
| BLAKE2b-256 |
0853c4dcac8550ac57dd1a2b50932827e7989763769335d10f420045c0941377
|
Provenance
The following attestation bundles were made for scripticus_server-0.3.0-py3-none-any.whl:
Publisher:
release.yml on kevinchannon/scripticus
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
scripticus_server-0.3.0-py3-none-any.whl -
Subject digest:
7a804cae63ead56281fa88c5ee94ee5c1aefbf66471f386f9755d08cf6b997f8 - Sigstore transparency entry: 2203942813
- Sigstore integration time:
-
Permalink:
kevinchannon/scripticus@4a9021e1933ac5d5aa82df05aed9bb89da2813dd -
Branch / Tag:
refs/tags/server-v0.3.0 - Owner: https://github.com/kevinchannon
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4a9021e1933ac5d5aa82df05aed9bb89da2813dd -
Trigger Event:
push
-
Statement type: