Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
An agent-friendly job board you self-host. Its own listings, never scraped. Web, API, MCP, CLI, TUI, desktop and PWA on one engine, and instances find each other through an open directory.
翻譯準備中
正在載入完整 README。
檢視完整 README ↗A job board where the agent on each side has a person behind it.
The next few years of hiring look like this: a candidate's agent finds the role and drafts the application, an employer's agent writes the posting and reads what comes back, and a person at each end decides what actually happens. Everything in this repository is built around that sentence.
Which means two things most job boards get wrong:
Nothing here is scraped. Every listing was posted to this board by the employer. An empty search means nobody posted that job, not that a crawler missed it. That is the only way a search result is worth anything to an agent, which cannot tell a stale aggregator entry from a real opening.
Both ends have a human control point, and they are the same shape. An employer's agent writes a listing and it lands as a draft for a person to publish. A candidate's agent writes an application and it lands as a draft for a person to send. Neither side can be automated past its human, and neither side is asked to trust that the other one was not.
Self-hosted, MIT, Postgres. One person, one account, both sides of the table.
curl -fsSL https://agenticjobs.pwa.pit.world/install.sh | sh
agenticjobs signup
No root, nothing outside your home directory. agenticjobs update updates it and
agenticjobs uninstall removes it, using a manifest the installer left behind, so removal is
exact and needs no network. Your boards and tokens in ~/.config/agenticjobs are never
touched. The script is served as plain text, so you can read it in a browser before you pipe
it anywhere: https://agenticjobs.pwa.pit.world/install.sh
With npm instead: npm i -g @profullstack/agenticjobs.
| Web | Server-rendered, mobile first, works with JavaScript off |
| PWA | Installable, offline shell, no build step |
| REST | /api/v1, hand-written OpenAPI, reads need no credentials |
| MCP | /api/mcp over streamable HTTP, or agenticjobs-mcp over stdio |
| CLI | agenticjobs search, apply, post, publish, drafts, news |
| TUI | agenticjobs tui, both sides in one window |
| Desktop | Electron, signed in to the same boards as your terminal |
The MCP tools call the REST API rather than the database, so a tool call takes the same code path and the same permission checks a browser request does. There is deliberately no second read path anywhere in this codebase.
Two requests to apply. No page to render, no form to guess.
# what this board is, and where everything lives
curl https://agenticjobs.pwa.pit.world/.well-known/agenticjobs
# search it
curl "https://agenticjobs.pwa.pit.world/api/v1/jobs?q=rust&workplace=remote&agentPolicy=welcome"
# the application form, as data
# First fetch after idle can exceed 15s; retry once rather than skipping.
curl --retry 1 --retry-all-errors --max-time 30 \
https://agenticjobs.pwa.pit.world/api/v1/jobs/SLUG/apply-schema
# send it
curl -X POST https://agenticjobs.pwa.pit.world/api/v1/jobs/SLUG/apply \
-H 'content-type: application/json' \
-d '{"name":"Ada","email":"[email protected]","cover":"...",
"resume":"# Ada Lovelace\n\n- **Email**: [email protected]\n",
"agent":{"name":"claude-opus-5","supervised":true}}'
Every listing declares one, and it is required:
welcome | Agent-written applications are fine. Nothing is asked. |
disclose | Fine, but say so. The application carries a structured disclosure. |
human-only | The employer is asking for something a person wrote. |
human-only is a request, not a control. No board can tell who wrote a cover letter,
and one that claims it can is selling something. Saying it plainly is worth more than
pretending to enforce it.
And disclosure is not evidence against a candidate. A board that collects the disclosure and then quietly filters those applications out has broken the field for everyone, because the next candidate learns to lie.
A file a person can read, diff, and keep. A file an agent can write without being taught a schema first.
# Ada Lovelace
- **Email**: [email protected]
- **Location**: London
## Experience
### Analytical Engine | London
Chief Programmer (1842 - 1843)
- Wrote the first published algorithm intended for a machine.
Upload a PDF, a Word file, plain text or Markdown and it is converted; what you keep and what employers read is the Markdown, and you edit it before it goes anywhere. A conversion nobody checks is a conversion nobody should trust.
The convention is OpenResume.md. The listing format is
OpenJob. Every public candidate also gets an
OpenProfile.md at /candidates/<slug>/openprofile.md, who and
where derived from the resume, next to the resume.md, .pdf and .docx downloads.
All three are conventions anyone can implement, and none requires this software.
The same rule holds for every other box on the board. A listing description, an employer profile, a cover letter, a message, an invoice description, an update and a recommendation all take plain text or Markdown, and each is shown rendered: paste an email and it reads as written, paste a bullet list and it is a list. Nothing anyone types ever becomes a tag.
git clone https://github.com/profullstack/agenticjobs
cd agenticjobs
cp .env.example .env # set PUBLIC_URL
docker compose up -d
以上為 README 的開頭部分。其餘內容請閱讀原文。 檢視完整 README ↗